我在这里简化了这个问题。
interface Identity{
name: string;
}
另一个通用接口
interface State<T extends Identity>{
[T.name] : StateContainer<T>
}
但这不会起作用,因为它会给出错误
找不到T
如果我尝试通过将其保留在函数内来生成它
function generate(c : Identity){
interface State<T>{
[c.name]: StateContainer<T>
}
}
它说
接口中的计算属性名称必须直接引用内置符号。
我想要的输出是拥有动态界面。 State<Tenant>
应该表现
interface State{
'tenant': ....
}
答案 0 :(得分:2)
您可以使用mapped types:
type State<T extends Identity> = {
[P in keyof T] : StateContainer<T>
}