摘要:
申明为 void 类型的变量,只能赋予 undefined 和 null。因此一个函数如果返回值是void类型,返回值只能是null或undefined let unusable: void = undefined; // OK function fn(): void { return null } 阅读全文
摘要:
泛型用于在成员之间提供有意义的约束,这些成员可以是类的实例成员、类的方法、函数参数、函数返回值。 类 class Queue<T> { private data: T[] = []; push(item: T) { this.data.push(item) } pop(): T | undefine 阅读全文
摘要:
TypeScript 允许你覆盖它的推断,并且能以你任何你想要的方式分析它,这种机制被称为「类型断言」。类型断言使用as关键字或者<type>表示。 const foo = {}; foo.bar = 123; // Error: 'bar' 属性不存在于 ‘{}’ foo.bas = 'hello 阅读全文
摘要:
参数注解和返回值注解 interface Foo { foo: string; } function getFoo(str: Foo): Foo { return str } getFoo(111) 如果没有添加返回值注解,ts自动推断出返回值。 可选参数和参数默认值 function foo(ba 阅读全文
摘要:
lib.d.ts包含 JavaScript 运行时以及 DOM 中存在各种常见的环境声明,方便我们在写代码时默认获得类型提示 let a = 11 a.toString() // 拥有类型提示 const height = window.innerHeight // 拥有类型提示 lib.d.ts 阅读全文
摘要:
枚举是组织收集有关联变量的一种方式,通过组织特殊类型的变量,使得代码更易读。 数字类型 enum Weekday { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } Weekday.Monday // 0 Weekda 阅读全文
摘要:
全局类型声明 对于使用js编写的第三方库,通常可以在DefinitelyTyped中找到types包,比如jQuery。 npm install @types/jquery --save-dev 使用 // 即使没有手动引入,全局也都拥有类型提示 $.ajax() 原因:默认所有可见的"@types 阅读全文
摘要:
在ts中,类型系统被设计为可选的,因此可以认为js就是没有类型声明的ts。 类型注解使用 :TypeAnnotation 语法 原始类型 let num: number; let str: string; let bool: boolean; :number、:string、:boolean都是原始 阅读全文
摘要:
全局模块 在全局命名空间中定义的模块就是全局模块,示例: // foo.ts const foo = 123; // bar.ts const bar = foo; 以上这种方式编译是通过的,因为foo在全局命名空间中,所以其他任何文件都可以引用foo。显然这是危险行为。 文件模块 文件模块也被称为 阅读全文
摘要:
ts中存在两种声明空间:类型声明空间和变量声明空间 类型声明 类型声明空间用来做类型注释 interface Bar {} type Bas = {}; let bar: Bar; let bas: Bas; // 但是不能当作变量使用 interface Bar {} const bar = Ba 阅读全文