泛型
function func1<T,U>(arr:[T,U]):[U,T]{
return [arr[1],arr[0]]
}
let result=func1(['str',1])
约束泛型
type TWithLength={
length:number
}
function func1<T extends TWithLength>(args:T):T{
return args
}
func1([1])
func1('s')
func1(1)//类型“number”的参数不能赋给类型“TWithLength”的参数。
interface IPlus<T>{
(a:number,b:number):number
}
const func2:IPlus<number>=(a,b)=>{
return a+b
}
const getStr1:IPlus<string>=(a,b)=>{
return a
}
// 类型别名
type NameResolver=()=>string;
type NameResolverOrString=string|NameResolver;
function getName(n:NameResolverOrString):string{
if(typeof n==='string'){
return n
}else{
return n()
}
}
// 类型断言
function fun3(n:string|number):number{
if((<string>n).length){
return (<string>n).length
}
}