TypeScript (14)
4922 ワード
TypeScript (14)
1. Generics Function関数タイプのみを定義し、その定義にJENIC(タイプalias、インタフェース)を追加する必要がある場合は、 で定義および使用します.
2. Generics Class
継承とはちょっと違う意味 Tは文字列と数字しかありません! タイプは常に小さな範囲に制限されます! (他のコードユーザー用)
4. keyof & type lookup systemコンパイル時の正確な位置決めタイプ
get安全タイプ コンパイル前にチェック可能なタイプエラー
1. Generics Function
type alias
type HelloFunctionGeneric1 = <T>(message: T) => T;
const helloFunction1: HelloFUnctionGeneric1 = <T>(message: T): T {
return message;
}
interface
interface HelloFunctionGeneric2 {
<T>(message: T): T;
}
const helloFunction2: HelloFunctionGeneric2 = <T>(message: T): T => {
return message;
}
2. Generics Class
class Person<T> {
private _name: string;
constructor(name: string) {
this._name = name;
}
}
new Person("Mark");
new Person<string>(39); //오류
3. Generics with extends継承とはちょっと違う意味
class Person<T extends string | number> {
private _name = T;
constructor(name: T) {
this._name = name;
}
}
new Person("Mark"); 가능
new Person(33); 가능
new Person(true); 불가
4. keyof & type lookup system
interface IPerson {
name: string;
age: number;
}
const person: IPerson = {
name: "Mark",
age: 33,
}'
name, age 얻어오거나 바꿀 수 있는 함수
エラー)function getProp(obj: IPerson,
key: "name" | "age"): string | number{
return obj[key];
}
function setProp(obj: Iperson,
key: "name" | "age", value: string | name): void {
obj[key] = value;
キー関数)type Keys = keyof IPerson;
const keys: Keys = "" -> name 혹은 age 입력가능
const keys: Keys = "name"; or "age"
上の内容をクリアして下に入力すると、同じ機能が実現しますfunction getProp(obj: IPerson,
key: keyof Iperson): IPerson[keyof IPerson]{
return obj[key];
}
function setProp(obj: Iperson,
key: keyof IPerson, value: string | name): void {
obj[key] = value;
BUTIPerson[keyof Iperson] => IPerson["name" | "age"]
=> IPerson["name"] | IPerson["age"]
=> string | number가 됨
)get
function getProp<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
getProp(person, 'name' or 'age'); // 지정된 타입으로 나온다는 장점
setfunction setProp<T, K extends keyof T>(obj: T, key: K, value: T[K]): Void {
obj[key] = value;
}
setProp(person, "name", "Anna");
setProp(person, "age", 33);
Reference
この問題について(TypeScript (14)), 我々は、より多くの情報をここで見つけました https://velog.io/@anthony16/TypeScript-14テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol