generic + extends

3189 ワード

強力なgenericタイプから入力値のタイプを推測します.
これはいいことです.
しかし,すべてのタイプを考慮して関数を記述することは不可能であるため,extendsを用いて範囲を縮小した.<T extends {length:number}>このコードの意味は
Tを用いてgenericタイプを用い,Tのメソッドlengthがnumberタイプを有するか否かを判別することで入力値を識別する.

function longest<T extends {length:number}>(a:T,b:T){
	if(a.length>=b.length){
		return a;
	}else{
		return b;
	}
}

const longerArray = longest([1,2],[3,4,5]);
const longerString = longest('abc','abcde');
const longerNumber= longest(1,23); // error!