我遇到了一个问题,试图让 typescript 为我识别 javascript 对象的键,同时强制每个键的值类型,因为我想创建一个 typeof 对象的键,所以我不能只创建一个常规的type MyObject = { [key: string]: <insert type> }.
想象一个对象myobject,我在其中提取它的键,例如:
const myobject = {
foo: {},
bar: {}
};
type MyObjectKeys = keyof typeof myobject; // 'foo' | 'bar'
Run Code Online (Sandbox Code Playgroud)
如何向键的值添加类型定义,同时仍然能够提取/继承键的定义?如果我做这样的事情,那么我将不再能够提取对象的确切键,而只能提取类型(字符串):
type MyObject = { [key: string]: { value: boolean }}
const myobject = {
foo: { value: true },
bar: { value: false }
};
type MyObjectKeys = keyof typeof myobject; // string
Run Code Online (Sandbox Code Playgroud)
我想我可以通过创建一个辅助函数来实现这一点,例如:
function enforceObjectType<T extends MyObject>(o: T) { …Run Code Online (Sandbox Code Playgroud)