泛型

语法

type RecordName <GenericName1, … > = { PropName: TypeName, … }

例如:

type G1<T1, T2, T3> = {   -- 这里T1,T2,T3是泛型的类型变量,这里定义了个泛型类型G1,具体使用时可以用具体类型分别替代T1,T2,T3,产生一个新类型
    id: string,
    a: T1,
    b: T2,
    c: T3
}

语法

type RecordName {<GenericName1, … > } = RecordNameExisted { <TypeName1, … >  }

例如:

type G2<T> = G1<int, T, string>        -- 定义一个有类型变量T的新泛型G2,这个泛型是用int,T,string分别替代G1泛型中的三个类型变量产生的新类型
type G3 = G2<string>                   -- 定义一个新类型G3,这个类型是用string替代G2泛型中的类型变量产生的新类型

比如:

type G2<T> = { name: string, info: T }
let a1: G2<string> = { name: 'uvm', info: 'hello' }
let a2 = G2<int>({ name: 'uvm', info: 123 })