[タイプスクリプト]タイプスクリプトのGeneric
4721 ワード
Generic
関数やクラスではなくポイントを使用する宣言ポイント宣言タイプの方法を提供します.
// 함수의 선언 시점
function array(a: number, b: number): number[] {
return [a, b];
}
array(1, 2); // [1, 2]
array('1', '2'); // Argument of type 'string' is not assignable to parameter of type 'number'.
// 함수의 사용 시점
function array<T>(a: T, b: T): T[] {
return [a, b];
}
array<number>(1, 2); // [1, 2]
array<string>('1', '2'); // ['1', '2']
array<number | string>(1, '2'); // [1, '2']
array(1, 2); // [1, 2]
array('1', '2'); // ['1', '2']
array(1, '2'); // Argument of type 'string' is not assignable to parameter of type 'number'.
インタフェースでのGenericの使用
interface IType<T> {
name: string,
value: T
}
T位置に希望のタイプを入れて使用できます.const dataA: IType<string> = {
name: 'miniddo',
value: 'velog'
}
const dataB: IType<number> = {
name: 'miniddo',
value: 20
}
const dataC: IType<number[]> = {
name: 'miniddo',
value: [1, 2, 3, 4, 5]
}
Genericを使用するためにインタフェースに制約を掛ける
interface IType<T extends string | number> {
name: string,
value: T
}
or
type U = string | number;
interface IType<T extends U> {
name: string,
value: T
}
Tはstringとnumberタイプしか使用できません.const dataA: IType<string> = {
name: 'miniddo',
value: 'velog'
}
const dataB: IType<number[]> = { // Type 'number[]' does not satisfy the constraint 'string | number'
name: 'miniddo',
value: [1, 2, 3, 4, 5]
}
Type Alias
はインターフェースのようにGenericを使用することもできる.type U = string | number;
type IType<T extends U> = string | T;
type IType<T extends U> = {
name: string,
value: T
};
コメントサイト
https://heropy.blog/2020/01/27/typescript/
Reference
この問題について([タイプスクリプト]タイプスクリプトのGeneric), 我々は、より多くの情報をここで見つけました https://velog.io/@minidoo/타입스크립트-TypeScript의-제너릭Genericテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol