fish519 / note

Write down problems encountered during development and take notes on how to solve them
0 stars 0 forks source link

TypeScript 学习 #14

Open fish519 opened 5 years ago

fish519 commented 5 years ago

【基础类型】

变量后面添加冒号,再跟着元素类型 let isDone: boolean = false let decLiteral: number = 6 let name:string = "fish" let list:number[] = [1,2,3]

使用范形(尖括号) let list: Array = [1,2,3]

元祖,可以表示已知元素数量和类型的数组 let x: [string, numer]

枚举(可以通过枚举的值得到名字) enum Color { Red, Green, Blue}

任意值(和object的区别) let list: any[] = [1, true, 'free']

空值 void,和any类型相反 通常用于函数返回值为空 function test(): void{ console.log('test') }

Null和Undefined

Never 永不存在的值的类型(抛异常的时候用?)

Object 非原始类型

类型断言(使用jsx的时候只有as语法断言是被允许的) 1、尖括号语法 2、as语法

fish519 commented 5 years ago

【变量声明】

使用let和const,不使用var var,作用域问题,变量提升等

解构 数组解构,对象解构

函数声明 解构也能用于函数声明 type C = { a: string, b?: number} function f({ a , b } : C): void { // ... }

fish519 commented 5 years ago

【接口】

使用接口去检查类型(只要传入的对象属性满足接口的必要条件就可以了) interface LabeledValue { label: string } function printLabel(labelObj: LabeledValue) { console.log(labeledObj.label); }

接口的可选属性(属性后面加个问号) interface SquareConfig { color?: string; width?: number; }

接口的只读属性 interface Point{ readonly x:number; readonly y:number; } 不可变的数组 let a: number[] = [1,2,3,4]; let ro: readonlyArray = a;

额外的属性检查

接口的函数类型(接口可以描述函数类型) interface SearchFunc { (source: string, subString: string): boolean; }

接口的可索引类型(具有索引签名,描述了对象索引的类型,还有相应的索引返回值类型) interface StringArray{

}

类类型(能够用接口来明确的强制一个类去符合某种契约) interface ClockInterface { currentTime: Date; } class Clock implements ClockInterface { currentTime: Date = new Date(); contructor(h: number, m: number) {} }

类静态部分与实例部分的区别(???)

继承接口(继承接口,实现接口的时候也会实现父接口,还可以继承多个接口,创建合成接口) interface A{a: string} interface B extends A{b: string} let test = {}; test.a = 'a'; test.b = 'b';

混合类型

接口继承类(接口继承类A,A拥有私密或者保护成员,接口只能由A或者A的子类实现)