网站搜索

typescript - 泛型类中部分记录不可分配


我不能将 {b: 1} 分配给 foo,但使用 bar 和 baz 时可以。

在这个代码中,我尝试排除 A 的所有字段。继承中的其他字段应该被允许

类型 '{ b: number; }' 不能分配给类型 'Partial, unknown>>' ts(2322)

class A {
  a: string
}

class B extends A{
  b: number
}

class C extends B {
  c: string
}

type keyOfModel<T extends B> = keyof Omit<T, keyof A>

const bar: Partial<Record<keyOfModel<B>, unknown>> = {b: 1 }
const baz: Partial<Record<keyOfModel<C>, unknown>> = {b: 1 }

function Test<T extends B>() {
  const foo: Partial<Record<keyOfModel<T>, unknown>> = {b: 1 }
}

Typescript 4.5.4