泛型Generics
约束泛型entends
interface IWithLen { length: number }
function RetLen<T extends IWithLen>(arg: T): T { console.log(arg.length) return arg }
|
泛型在类和接口的使用
class GenericNumber<T> { zeroValue: T; add: (x: T, y: T) => T; }
interface KeyPair<T, U> { key: T value: U } let kp1: KeyPair<number, string> = { key: 1, value: "string"} let kp2:KeyPair<string, number> = {key:'str', value:2}
|
类型别名,字面量和交叉类型
type Name = string type NameResolver = () => string type NameOrResolver = Name | NameResolver
const strZ: 'name' = 'name' const number: 1 = 1 / 交叉类型 interface Iname { name: string }
type IPerson = Iname & { age: number } let person: IPerson = { name: '123', age: 23 }
|
在用到别名或者交叉组合时用type,遇到类和接口用interface