是否可以基于对象的实例定义类型?
我不想首先定义一个接口,我想要一个以值作为输入而不是类型的通用类型。
示例:
const someObject: any = {
foo: "",
bar: ""
}
// should show error because "bar" property is missing
const someOtherObject: SameShape<someObject> {
foo: ""
}
目前我只需要一个平面对象结构。所以像这样(除了可行的东西):
type SameShape = { [key in keyof someObject]: string }
答案 0 :(得分:3)
使用typeof
运算符。
// This is valid
const someOtherObject: SameShape<typeof someObject>
type SameShape<T> = { [key in keyof T]: string }
但是您需要先删除any
中的someObject: any
。
现在,对于您的用例而言,以下内容就足够了,您不需要额外的SameShape
const someOtherObject: typeof someObject = {/* ... */}