TypeScript 中定义类型的两种方式:
接口(interface)和 类型别名(type alias)。
type Point = {x: number;y: number;};type SetPoint = (x: number, y: number) => void;interface Point {x: number;y: number;}interface SetPoint {(x: number, y: number): void;}interface SetPoint {(x: number, y: number): void;}
typeof 操作符可以用来获取一个变量或对象的类型。
const defaultOption = {timeout: 500}type Opt = typeof defaultOption
keyof
keyof 与 Object.keys 略有相似,只不过 keyof 取 interface 的键。
避免使用any
function get<T extends object, K extends keyof T>(o: T, name: K): T[K] {return o[name]}
查找类型
interface Person {addr: {city: string,street: string,num: number,}}const addr: Person["addr"] = {city: 'string',street: 'string',num: 2}
泛型
interface API {'/user': { name: string },'/menu': { foods: string[] }}const get = <URL extends keyof API>(url: URL): Promise<API[URL]> => {return fetch(url).then(res => res.json());}get('');get('/menu').then(user => user.foods);
