TypeScript - Generic
8594 ワード
Generic
function 함수<MyType, MyType2>(x: MyType[], y: MyType2[]): MyType {
return x[0];
}
let x = 함수<number, string>([1, 2], ["3", "4"]);
関数に値を入力した場合、タイプスクリプトは自分で変更されません.戻り値が不明な場合は、実際にnumberタイプを返しても演算にエラーが発生する可能性があります.したがって、genericを縮小または使用します.
// Generic 사용하지 않았을 때
function 함수(x: unknown[]) {
return x[0];
}
let a = 함수([1, 2]);
// a의 타입은 number가 아니라 unknown
// 연산 하려면 narrowing 해야함
console.log(a + 1); // 에러
// Generic을 사용했을 때
function 함수2<MyType>(x: MyType[]): MyType {
return x[0];
}
let b = 함수2<number>([1, 2]);
console.log(b + 1);
Constraints
Genericタイプの制限を設定できます.
function 함수<MyType extends number>(x: MyType): number {
// 연산할 때 narrowing 할 필요 없음
return x + 1;
}
下図のようにカスタムタイプにも適用されます interface LengthCheck {
length: number;
}
function 함수<MyType extends LengthCheck>(x: MyType): number {
// 연narrowing 할 필요 없음
return x.length;
}
クラスでのGenericの使用
クラスでgenericを使用する場合は、クラス名の右側にタイプを記入します.
class 클래스<T> {
name;
constructor(a: T) {
this.name = a;
}
}
let a = new 클래스<string>("John");
console.log(typeof a.name); // 출력: string
Reference
この問題について(TypeScript - Generic), 我々は、より多くの情報をここで見つけました https://velog.io/@boorook/TypeScript-Genericテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol