学习TypeScrip3(接口和对象类型)

简介: 学习TypeScrip3(接口和对象类型)

对象的类型


在typescript中,我们定义对象的方式要用关键字interface(接口),我的理解是使用interface来定义一种约束,让数据的结构满足约束的格式。定义方式如下:


//这样写是会报错的 因为我们在person定义了a,b但是对象里面缺少b属性
//使用接口约束的时候不能多一个属性也不能少一个属性
//必须与接口保持一致
interface Person {
    b:string,
    a:string
}
const person:Person  = {
    a:"213"
}


//重名interface  可以合并
interface A{name:string}
interface A{age:number}
var x:A={name:'xx',age:20}
//继承
interface A{
    name:string
}
interface B extends A{
    age:number
}
let obj:B = {
    age:18,
    name:"string"
}


可选属性 使用?操作符


//可选属性的含义是该属性可以不存在
//所以说这样写也是没问题的
interface Person {
    b?:string,
    a:string
}
const person:Person  = {
    a:"213"
}


任意属性 [propName: string]


需要注意的是,一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子集:


//在这个例子当中我们看到接口中并没有定义C但是并没有报错
//应为我们定义了[propName: string]: any;
//允许添加新的任意属性
interface Person {
    b?:string,
    a:string,
    [propName: string]: any;
}
const person:Person  = {
    a:"213",
    c:"123"
}


只读属性 readonly


readonly 只读属性是不允许被赋值的只能读取


//这样写是会报错的
//应为a是只读的不允许重新赋值
interface Person {
    b?: string,
    readonly a: string,
    [propName: string]: any;
}
const person: Person = {
    a: "213",
    c: "123"
}
person.a = 123


添加函数


interface Person {
    b?: string,
    readonly a: string,
    [propName: string]: any;
    cb:()=>void
}
const person: Person = {
    a: "213",
    c: "123",
    cb:()=>{
        console.log(123)
    }
}


下一章数组学习TypeScrip4(数组类型)_qq1195566313的博客-CSDN博客

目录
相关文章
|
7月前
|
JavaScript 前端开发
理解包装对象类型
理解包装对象类型
45 0
|
9月前
|
Java
Java接口中可以定义哪些方法?
【4月更文挑战第13天】
538 0
Java接口中可以定义哪些方法?
|
9月前
|
JavaScript 前端开发 编译器
TypeScript【可选属性、只读属性、额外的属性检查、函数类型、类类型、继承接口】(四)-全面详解(学习总结---从入门到深化)
TypeScript【可选属性、只读属性、额外的属性检查、函数类型、类类型、继承接口】(四)-全面详解(学习总结---从入门到深化)
97 0
|
索引
学习TypeScrip9(元组类型)
元组与集合的不同之处在于,元组中的元素类型可以是不同的,而且数量固定。元组的好处在于可以把多个元素作为一个单元传递。如果一个方法需要返回多个值,可以把这多个值作为元组返回,而不需要创建额外的类来表示。
99 0
学习TypeScrip9(元组类型)
|
JavaScript 前端开发
学习TypeScrip10(枚举类型)
字符串枚举的概念很简单。 在一个字符串枚举里,每个成员都必须用字符串字面量,或另外一个字符串枚举成员进行初始化。
83 0
学习TypeScrip10(枚举类型)
|
JavaScript
学习TypeScrip11(类型推论|类型别名)
如果你声明变量没有定义类型也没有赋值这时候TS会推断成any类型可以进行任何操作
105 0
学习TypeScrip11(类型推论|类型别名)
|
JavaScript
学习TypeScrip12(never类型)
差异2 当我们鼠标移上去的时候会发现 只有void和number never在联合类型中会被直接移除
83 0
|
安全 JavaScript
学习TypeScrip2(任意类型)
TypeScript 3.0中引入的 unknown 类型也被认为是 top type ,但它更安全。与 any 一样,所有类型都可以分配给unknown
104 0
学习TypeScrip4(数组类型)
学习TypeScrip4(数组类型)
54 0
|
Python
Python面向对象、类的抽象、类的定义、类名遵循大驼峰的命名规范创建对象、类外部添加和获取对象属性、类内部操作属性魔法方法__init__()__str__()__del__()__repr__()
面向对象和面向过程,是两种编程思想. 编程思想是指对待同一个问题,解决问题的套路方式.面向过程: 注重的过程,实现的细节.亲力亲为.面向对象: 关注的是结果, 偷懒.类和对象,是面向对象中非常重要的两个概念object 是所有的类基类,即最初始的类class 类名(object): 类中的代码PEP8代码规范:类定义的前后,需要两个空行 创建的对象地址值都不一样如dog和dog1的地址就不一样,dog的地址为2378043254528dog1的地址为2378044849840 8.类内部操作属性 sel
285 1
Python面向对象、类的抽象、类的定义、类名遵循大驼峰的命名规范创建对象、类外部添加和获取对象属性、类内部操作属性魔法方法__init__()__str__()__del__()__repr__()