自己做的网站数据库,网店制作,沧浪企业建设网站公司,电子商务网站开发遇到的问题前言
TypeScript 越来越火#xff0c;现在很多前端团队都使用它#xff0c;因此咱们前端码农要想胜任以后的前端工作#xff0c;就要更加熟悉它。
入门练手题
interface A {x: number;y: number;
}type T PartialA;const a: T { x: 0, y: 0 };
const b: T { …前言
TypeScript 越来越火现在很多前端团队都使用它因此咱们前端码农要想胜任以后的前端工作就要更加熟悉它。
入门练手题
interface A {x: number;y: number;
}type T PartialA;const a: T { x: 0, y: 0 };
const b: T { x: 0 };
const c: T { y: 0 };
const d: T {};type MyPartialT {[P in keyof T]?: T[P];
};interface B {x?: number;y: number;
}type T0 RequiredB;const a0: T0 { x: 0, y: 0 };type MyRequiredT {[P in keyof T]-?: T[P];
};interface C {x?: number;y: number;
}type T1 ReadonlyC;const a1: T1 { x: 0, y: 0 };// a1.x1type MyReadonlyT {readonly [P in keyof T]: T[P];
};interface Cat {age: number;gender: string;
}type CatName seraph | ashe | ahri;const cats: RecordCatName, Cat {seraph: { age: 10, gender: male },ashe: { age: 5, gender: female },ahri: { age: 16, gender: female },
};/* 在 TypeScript 中当你看到 K extends keyof any 这样的表达时
它的作用是约束类型 K 为一个有效的类型可以作为对象的键。
这里的 keyof any 是指所有可能的 JavaScript 值的键的联合类型。
简单来说keyof any 通常等价于 string | number | symbol
因为在 JavaScript 中对象的键可以是这三种类型。
你可以使用 stringnumber 或者 symbol 作为对象属性的键。 */type MyRecordK extends keyof any, T {[P in K]: T;
};interface Todo {title: string;description: string;done: boolean;
}type TodoPreview PickTodo, title | done;const todo: TodoPreview {title: play games,done: false,
};type MyPickT, K extends keyof T {[P in K]: T[P];
};type E0 Excludea | b, a;type E1 Excludestring | number | (() void), Function;type MyExcludeT, U T extends U ? never : T;interface Todos {title: string;desc: string;done: boolean;no: number;
}type TodoPre OmitTodos, desc;const todopre: TodoPre {title: play,done: false,no: 2,
};type TodoInfo OmitTodos, desc | no;const todoInfo: TodoInfo {title: play,done: false,
};type MyOmitT, K extends keyof any PickT, Excludekeyof T, K;type E Extracta | b, a | f;type E3 Extractstring | number | (() void), Function;type MyExtratT, U T extends U ? T : never;declare function f(args: { a: number; b: string }): void;type P0 Parameters() string; // []type P1 Parameters(s: string) void; // [s: string]type P2 ParametersT(arg: T) T; // [arg: unknown]type P3 Parameterstypeof f;type MyParametersT extends (...args: any) any T extends (...args: infer P
) any? P: never;type R ReturnType() void;const add (x: number, y: number): number {return x y;
};type R1 MyReturnTypetypeof add;type MyReturnTypeT extends (...args: any) any T extends (...args: any
) infer R? R: any;