【发布时间】:2019-04-26 23:07:47
【问题描述】:
我试图达到说明一些通用 P 是 O 的一部分的直观结果。
declare function foo<O, P extends Partial<O>>(obj: O, part: P): P
但是,这允许 P 的键不是 O
// no errors
foo({a:2},{a:100, b:2})
这也不行
declare function foo<O, P>(obj: O, part: P & Partial<O>): P
此版本有效
declare function foo<O, P>(obj: O, part: Partial<O>): unknown
// correct, Typescript complains that `b` is not allowed
foo({a:2},{a:100, b:2})
然而返回类型不能泛型P。
是否存在将 P 限制为 O 中的键并满足通用要求的解决方案?
-- 更新
对于任何感兴趣的人,我已经发布了一个要点,其中包含一些有用的部分类型,它们不允许过多的属性
https://gist.github.com/babakness/a1ca775f81097ffae04098a8cfdadc60
【问题讨论】:
标签: typescript generics typescript-typings typescript-generics