let isDone: boolean = false; let decLiteral: number = 6 let sentence: string = `Hello, my name is ${myName}` let myFavoriteNumber: any = 'seven'; // 如果是 any 类型,则允许被赋值为任意类型 let myFavoriteNumber: string | number; // 联合类型(Union Types)表示取值可以为多种类型中的一种 let fibonacci: number[] = [1, 1, 2, 3, 5]; // 最简单的方法是使用「类型 + 方括号」来表示数组 let fibonacci: (number | string)[] = [1, '1', 2, 3, 5]; // 添加多个类型 let fibonacci: Array<number> = [1, 1, 2, 3, 5]; // 数组泛型 let list: any[] = ['xcatliu', 25, { website: 'http://xcatliu.com' }]; // 一个比较常见的做法是,用 any 表示数组中允许出现任意类型
注意:使用构造函数 Boolean 创造的对象不是布尔值:
1 2 3
let createdByNewBoolean: boolean = newBoolean(1); // Type 'Boolean' is not assignable to type 'boolean'. // 'boolean' is a primitive, but 'Boolean' is a wrapper object. Prefer using 'boolean' when possible.
functionalertName(): void{ alert('My name is Tom'); }
声明一个 void 类型的变量没有什么用,因为你只能将它赋值为 undefined 和 null:
1
let unusable: void = undefined;
对象类型–接口
在 TypeScript 中,我们使用接口(Interfaces)来定义对象的类型。
1 2 3 4 5 6 7 8 9 10 11
// 在定义的变量比接口少了一些属性或多一些属性是不允许的,赋值的时候,变量的形状必须和接口的形状保持一致。 interface Person { name: string; age: number; }
let tom: Person = { name: 'Tom' }; // index.ts(6,5): error TS2322: Type '{ name: string; }' is not assignable to type 'Person'. // Property 'age' is missing in type '{ name: string; }'.
let tom: Person = { name: 'Tom', age: 25, gender: 'male' }; // index.ts(3,5): error TS2411: Property 'age' of type 'number' is not assignable to string index type 'string'. // index.ts(7,5): error TS2322: Type '{ [x: string]: string | number; name: string; age: number; gender: string; }' is not assignable to type 'Person'. // Index signatures are incompatible. // Type 'string | number' is not assignable to type 'string'. // Type 'number' is not assignable to type 'string'.
functiongetLength(something: string | number): number{ if (something.length) { return something.length; } else { return something.toString().length; } } // index.ts(2,19): error TS2339: Property 'length' does not exist on type 'string | number'. // Property 'length' does not exist on type 'number'. // index.ts(3,26): error TS2339: Property 'length' does not exist on type 'string | number'. // Property 'length' does not exist on type 'number'.
let b: Boolean = newBoolean(1); let e: Error = newError('Error occurred'); let d: Date = newDate(); let r: RegExp = /[a-z]/; let body: HTMLElement = document.body; let allDiv: NodeList = document.querySelectorAll('div'); document.addEventListener('click', function(e: MouseEvent) { // Do something });