1、匿名对象
匿名对象类型是在定义变量时直接使用花括号{},来定义一个对象类型。
const person: { name: string, age: number } = { name: 'John', age: 25 };
2、接口类型
使用接口来定义对象类型,可以使代码更加可读、易于维护
interface Person {
name: string;
age: number;
const person: Person = { name: 'John', age: 25 };
3、类别类型
使用类型别名可以为对象类型定义简短、易读的名称。
type Person = {
name: string;
age: number;
const person: Person = { name: 'John', age: 25 };
4.快速模仿
还是跟JS一样
let person:{ownName:string,gender:string} = {
ownName: "Semlinker",
gender: "Male",
let { ownName, gender } = person;
console.log(ownName)
console.log(gender)
1. 可选属性
顾名思义,不是必须存在的属性。用?标识出来。
interface Person {
name: string;
age?: number;
gender?: string;
let player:{name:string,level?:number} = {name:'a'}
2、只读属性
TypeScript中,我们可以声明一个对象类型中的属性为只读属性,即该属性的值一旦被赋值就不能再被修改。
type Student = {
readonly name: string;
age: number;
3. 索引签名
对象类型可以包含索引签名,以支持在动态属性上访问属性值。索引签名允许您在对象类型中定义一个模式,该模式指定应该具有哪些属性和属性类型
interface ExampleObject {
[key: string]: string;
const exampleObject: ExampleObject = {
name: "小星星",
class: "小班",
// ...
注意这里是[key:xxx]。这里代表exampleObject里的键名是字符串,值也是字符串。
利用这个特性,我们可以创造出类数组对象:
interface ExampleObject {
[key: number]: string;
const exampleObject: ExampleObject = {
0: "value1",
1: "value2",
// ...
规定只读属性
interface ExampleObject {
readonly [key: string]: string;
键值是联合类型:
interface ExampleObject {
[key: string]: string | number;
4.扩展类型
TypeScript中的对象类型是通过接口来定义的,接口可以扩展其他接口,从而实现对象类型的扩展。
interface Person {
name: string;
age: number;
interface Student extends Person {
school: string;
grade: string;
5.交叉类型(&)
看前面推文。
交叉类型和interface的extends扩展类型的区别
与交叉类型相比,使用interface的extends扩展类型可以实现类似的效果,但是它们的设计思想不同。extends用于在一个类型基础上扩展属性和方法,而交叉类型则是将多个类型合并起来以创建一个新的类型。
6.泛型对象类型
泛型具体的内容可以看我的其他推文。
泛型对象类型可以用于对象属性中的类型声明。例如,以下代码定义了一个对象类型,该对象具有不同类型的属性:
interface List<T> {
data: T[]
add: (item: T) => void
const list1: List<string> = {
data: ['hello', 'world'],
add(item) {
this.data.push(item)
const list2: List<number> = {
data: [1, 2],
add(item) {
this.data.push(item)
在上面的代码中,<T>表示泛型对象类型,我们在List<T>中使用了该类型,以声明data属性和add方法的参数和返回类型。
在TypeScript中定义对象类型有以下三种方式:匿名对象类型是在定义变量时直接使用花括号{},来定义一个对象类型。例如:
上述代码中定义了一个person变量,它的类型为对象,它有两个属性:name和age,其中name属性的类型为字符串,age属性的类型为数字。使用接口来定义对象类型,可以使代码更加可读、易于维护。例如:
上述代码中,定义了一个名为Person的接口,其中包括了两个属性:name和age。然后使用Person接口来定义了一个person变量,它的类型为Person接口。使用类型别名可以
类封装完以后就可以通过使用new关键字和类的构造方法来创建对象,这种对象分为两种:匿名对象与非匿名对象。何为匿名对象,何为非匿名对象呢?举个例子:假如有如下类:
package com.heima.vo;
public class Student
private String name="lisi";
private int age=1
继承的含义
继承:在java中指的是“一个类”可以“继承自”“另一个类”。 "被继承的类"叫做: 父类/超类/基类,"继承其他类的类"叫做:子类。继承后,“子类”中就“拥有”了“父类”中所有的成员(成员变量、成员方法)。 “子类就不需要再定义了”。
继承的好处
提高代码的复用性(减少代码冗余,相同代码重复利用)。
使类与类之间产生了关系。
继承的格式
通过 extends 关键字,可以声明一
今天来聊聊TS中的那些对象类型----TypeScript系列:(三) 对象类型
对象是我们组织数据的基本方式。除了常规的对象类型外,TS还提供了只读数组、元组、属性修饰符、索引签名等知识体系。在前面的章节中,我们已经了解到了对象的基本使用。可以用字面量、interface、type alias来规定一个普通的对象类型。现在是时候了解一下常用的对象属性修饰符、类型拓展、索引签名和内置的特殊对象类型了。 还没有对象吗?那就赶紧new一个吧!
文章目录今天来聊聊TS中的那些对象类型----TypeScrip.
let arr = ['a','b','c',9]
arr.forEach(item => {
// 这个item是可以推导出来的 他一定是string类型或者number类型 所以可以写 也可以不写
console.log(item)
TypeScript-学不会的ts-3(类与对象)面向对象的七大原则TypeScript 类类的定义创建实例化对象类的继承继承类的方法重写(overwrite)static 关键字instanceof 运算符类属性权限修饰符存取器TypeScript对象对象字面量表示法TypeScript 类型模板对象作为函数参数匿名对象抽象类和抽象方法
面向对象的七大原则
(1)单一原则:一个类只负责一个职责。
(2)里氏替换原则:子类可以在任何地方替换它的父类。
(3)依赖倒置原则:代码要依赖于抽象的类,而不要依赖于
类型断言的作用是使typescript假设已经进行了类型检查
类型断言类似其他语言里的类型转换,但是不进行特殊的类型转换和解构
只在编译阶段起作用,没有运行时的影响
两种形式的语法:尖括号语法与as语法
//尖括号语法
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
//as语法
let someValue: any = "this i
javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解。
( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到...
[Echarts]解决dataZoom当startValue 和 endValue 的值相等(一页只显示一个group bar),页面无法滚动。start和end值设置讲解。思路全讲解!
CSDN-Ada助手:
flex:1的容器会被内部元素撑开的解决方法
小林089:
如何展开一个多维数组
啪了个猫: