首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深度讲解TS:这样学TS,迟早进大厂【08】:对象的类型—接口

TS系列地址: 21篇文章带你玩转ts # 对象的类型——接口 在 TypeScript 中,我们使用接口(Interfaces)来定义对象的类型。...可见,赋值的时候,变量的形状必须和接口的形状保持一致。...如果接口中有多个类型的属性,则可以在任意属性中使用联合类型: interface Person { name: string; age?...注意,只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候: interface Person { readonly id: number; name: string...上例中,报错信息有两处,第一处是在对 tom 进行赋值的时候,没有给 id 赋值。 第二处是在给 tom.id 赋值的时候,由于它是只读属性,所以报错了。 参考§ Interfaces(中文版)

91610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    TypeScript 对象的类型-接口

    name: string; age: number; } let faker: Person = { name: 'faker' }; // index.ts(6,5): error TS2322...let faker: Person = { name: 'faker', age: 25, gender: 'male' }; // index.ts(9,5): error TS2322...需要注意的是,一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它类型的子集: interface Person { name: string; age?...上例中,使用 readonly 定义的属性 id 初始化后又被赋值,所以报错 注意,只读的约束存在于第一次给对象赋值的时候,而非第一次给只读属性赋值的时候: interface Person {...上例中,报错信息有两处: 1、在对 faker 进行赋值的时候,没有给 id 赋值 2、在给 faker.id 赋值的时候,由于它是只读属性,所以报错了 五、联合类型和接口 以下实例演示了如何在接口中使用联合类型

    3.4K10

    TypeScript学习笔记(二)—— TypeScript基础

    注意,只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候: interface Person { readonly id: number; name: string...上例中,报错信息有两处,第一处是在对 tom 进行赋值的时候,没有给 id 赋值。 第二处是在给 tom.id 赋值的时候,由于它是只读属性,所以报错了。... tom 可以赋值给 Animal 类型的 animal 了——就像面向对象编程中我们可以将子类的实例赋值给类型为父类的变量。...,将 tom 声明为 Cat,然后再将 any 类型的 getCacheData('tom') 赋值给 Cat 类型的 tom。...则会报错,不允许将 animal 赋值为 Cat 类型的 tom。 这很容易理解,Animal 可以看作是 Cat 的父类,当然不能将父类的实例赋值给类型为子类的变量。

    5.1K20

    开心的档之TypeScript 变量声明

    ,如果将不同的类型赋值给变量会编译错误,如下实例:var num:number = "hello" // 这个代码会编译错误----类型断言(Type Assertion)类型断言可以用来手动指定一个值的类型...:1----类型推断当类型没有给出时,TypeScript 编译器利用类型推断来推断类型。...注意变量声明没有指定类型。因此,程序使用类型推断来确定变量的数据类型,第一次赋值为 2,num 设置为 number 类型。第三行代码,当我们再次为变量设置字符串类型的值时,这时编译会错误。...因为变量已经设置为了 number 类型。error TS2322: Type '"12"' is not assignable to type 'number'....实例变量: " + obj.num_val);执行以上 JavaScript 代码,输出结果为:全局变量为: 1210实例变量: 13如果我们在方法外部调用局部变量 local_num,会报错:error TS2322

    78230

    开心档之TypeScript 变量声明

    ,如果将不同的类型赋值给变量会编译错误,如下实例: var num:number = "hello" // 这个代码会编译错误 ---- 类型断言(Type Assertion) 类型断言可以用来手动指定一个值的类型...; 执行输出结果为: 1 ---- 类型推断 当类型没有给出时,TypeScript 编译器利用类型推断来推断类型。...注意变量声明没有指定类型。因此,程序使用类型推断来确定变量的数据类型,第一次赋值为 2,num 设置为 number 类型。 第三行代码,当我们再次为变量设置字符串类型的值时,这时编译会错误。...error TS2322: Type '"12"' is not assignable to type 'number'. ---- 变量作用域 变量作用域指定了变量定义的位置。...obj.num_val); 执行以上 JavaScript 代码,输出结果为: 全局变量为: 12 10 实例变量: 13 如果我们在方法外部调用局部变量 local_num,会报错: error TS2322

    81120

    开心档之TypeScript 变量声明

    ,如果将不同的类型赋值给变量会编译错误,如下实例: var num:number = "hello" // 这个代码会编译错误 ---- 类型断言(Type Assertion) 类型断言可以用来手动指定一个值的类型...; 执行输出结果为: 1 ---- 类型推断 当类型没有给出时,TypeScript 编译器利用类型推断来推断类型。...注意变量声明没有指定类型。因此,程序使用类型推断来确定变量的数据类型,第一次赋值为 2,num 设置为 number 类型。 第三行代码,当我们再次为变量设置字符串类型的值时,这时编译会错误。...error TS2322: Type '"12"' is not assignable to type 'number'. ---- 变量作用域 变量作用域指定了变量定义的位置。...obj.num_val); 执行以上 JavaScript 代码,输出结果为: 全局变量为: 12 10 实例变量: 13 如果我们在方法外部调用局部变量 local_num,会报错: error TS2322

    58110

    TypeScript介绍和使用

    我们都知道,JavaScript是一门非常非常灵活的语言, 灵活到什么程度❓ 举个栗子: 1、我们声明变量 a 并赋值,类型为数值,值为 123 2、紧接着我们又将一个对象 object 赋值给 a,此时变量...这一切都源于 Javascrip 灵活的特性: 无类型约束 他没有类型约束,一个变量可能初始化时是数值,过一会儿又被赋值为对象 隐式转换 由于隐式类型转换的存在,有的变量的类型很难再运行前就确定...以下代码虽然没有指定类型,但是会在编译的时候报错: let demo = 'hellow world'; demo = 1; // index.ts(2,1): error TS2322: Type...事实上,它等价于: let demo: string = 'hellow world'; demo = 1; // index.ts(2,1): error TS2322: Type 'number'...如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 any 类型而完全不被类型检查: let demo; // 该行代码等价于 let demo: any; demo = 'hellow world

    89060

    TypeScript进阶

    注意:与声明不赋值区分,声明不赋值会设为任意值类型:any 类型推论(Type Inference)是指编程语言在编译期中能够自动推导出值的数据类型的能力,它是一些强静态类型语言的特性。...联合类型使用 | 分隔每个类型,表示可以赋值为其中的一种。...// 但访问 string 和 number 的共有属性不会报错,如:return something.toString(); 当联合类型的变量在被赋值的时候,会根据类型推论的规则推断出一个类型,此时访问该类型的属性不会报错...定义只读属性(只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候) interface Person { readonly id: number; name: string...function sum() { let args: number[] = arguments;//错误,arguments缺少属性push } // index.ts(2,7): error TS2322

    98120

    Typescript学习笔记,从入门到精通,持续记录

    如果定义的时候有赋值,类型就会被推断为这个值得类型; 如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 any 类型而完全不被类型检查 2.任意值(any) 如果是一个普通类型,在赋值过程中改变类型是不被允许的...但如果是 any 类型,则允许被赋值为任意类型。...只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候 5.数组的类型 //最简单的方法是使用「类型 + 方括号」来表示数组 let fibonacci: number[] = [1,...let tom: [string, number] = ['Tom', 25]; 枚举(Enum)类型用于取值被限定在一定范围内的场景,比如一周只能有七天,颜色限定为红绿蓝等,也可以给枚举项手动赋值:。...": true, // 不允许把null、undefined赋值给其他类型的变量 "strictFunctionTypes": true, // 不允许函数参数双向协变 "strictPropertyInitialization

    2K50

    【TypeScript】TS类型声明(四)

    类型,any类型可以赋值给任意类型unknown,never 都不允许执行变量的方法以及访问内部属性在unknown没有被断言或细化到一个确切类型之前,unknown不可以赋值给其它类型,除了它自己和any...类型的变量let testValue1: unknown = unknownValue;//赋值给any类型的变量let testValue2: any = unknownValue;错误示范://赋值给...= null;never(不存在的值类型)never类型表示永不存在的值的类型。...具有以下特点:never类型是所有类型的子类型,即never类型可以赋值给任何类型。其他任何类型均不是never类型的子类型,即其他类型均不可赋值给never类型,除了never本身。...即使any类型也不可以赋值给never类型。返回类型为never的函数中,其终点必须是不可执行的,例如函数过程中抛出了错误或者存在死循环。

    22010
    领券