【发布时间】:2019-04-24 19:50:44
【问题描述】:
对于给定的对象,例如:
class Product {
constructor(
public metadata: Metadata,
public topic: Topic,
public title = 'empty'
) {}
...
}
我要创建一个界面:
interface State<T> {
}
这样 TypeScript 可以确保 product: State<Product> 具有与 Product 相同的结构,但其匹配的叶级属性是布尔值。所以product 应该有一个布尔类型的title 属性。
我查看了mapped-types 的只读示例,但在这种情况下,我可能需要一个组合:
interface State<T> {
[p in keyof T]: typeof T[p] === 'object' ? State<T[p]> : boolean;
}
对如何实现这项工作有任何想法吗?
【问题讨论】:
标签: typescript