定义基于对象的TypeScript类型?

时间:2019-04-16 03:27:38

标签: typescript

是否可以基于对象的实例定义类型?

我不想首先定义一个接口,我想要一个以值作为输入而不是类型的通用类型。

示例:

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 }

1 个答案:

答案 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 = {/* ... */}