jtwang7 / JavaScript-Note

JavaScript学习笔记
10 stars 2 forks source link

TypeScript 修改(覆盖)类型对象中的某个属性类型 #66

Open jtwang7 opened 2 years ago

jtwang7 commented 2 years ago

TypeScript 修改(覆盖)类型对象中的某个属性类型

✅ 利用 Omit<T, R> 方法先过滤字段,然后将新的属性拼接到目标对象类型上

interface A {
  x: string;
}
export type B = Omit<A, 'x'> & { x: number };

❇️ 进一步,我们可以将该逻辑分装为一个函数

type Modify<T, R> = Omit<T, keyof R> & R;

❇️ ts 获取 interface 中某个成员字段的类型

ts 可以像 js 一样通过索引来获取成员字段对应的类型值,但是只支持 [] 索引,不支持 . 索引

interface Word {
  x: {
    y: number
  }
}

type Y = Word['x']['y']

注意: [] 内传入的是字段字符串,用 '' 包裹,否则将会被识别为变量而报错