鉴于此代码:
interface Foo{
one?: string;
two?: string;
}
type Foo2 = {
[P in keyof Foo]: number;
}
我期望的类型Foo2
to be { one: number; two: number; }
然而,它似乎保留了可选修饰符{ one?: number; two?: number; }
使用映射类型时是否可以删除可选修饰符?
在 Typescript 2.8 中,您可以显式消除修饰符:
type Foo2 = {
[P in keyof Foo]-?: number;
}
或者使用Required
内置于较新版本中的类型。
如果您使用的是旧版本,可以使用此解决方法:
type Helper<T, TNames extends string> = { [P in TNames]: (T & { [name: string]: never })[P] };
type Foo3 = Helper<Foo, keyof Foo>;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)