【发布时间】:2019-06-27 07:35:05
【问题描述】:
我正在尝试为旧版本的 Typescript 制作 Required 映射类型(例如 Ionic Framework 3 使用的 2.6.2)。
我到现在都有这个:
declare type MakeRequired<T, K extends string> = {
[P in K]: string
}
declare type MyRequiredType = MakeRequired<MyInterface, keyof MyInterface>
它要求T(MyInterface) 的可选属性,但当然它会将所有这些类型转换为strings。
所以
interface MyInterface {
optional?: Function
}
结束
MyRequiredType {
optional:string
}
有没有办法说“取T[P]的类型”?
我试过了:
[P in K]: T[K]
[P in K]: typeof T[K]
[P in K]: T[P]
我不熟悉映射类型,现在不知道该去哪里。
【问题讨论】:
-
您的
T未被使用。有错别字? -
你想让
T类型的所有属性都需要吗? -
@unional 是的,我想让所有
T属性成为必需的。这就是我注入T的原因,因为我认为我会需要它(但我不知道如何使用它) -
@TitianCernicova-Dragomir 有点像,尽管它使属性类型为 ' 类型 | undefined' 我正在寻找是否可以更改它。