强制索引键为字符串类型(类型没有索引签名)

时间:2019-09-15 14:03:15

标签: typescript generics

以下代码:

type Schema<T> = {
  [key in Extract<keyof T, string>]?: any;
};

function logoutValues<T>(schema: Schema<T>) {
  Object.keys(schema).forEach(key => {
    const value = schema[key];
    console.log(value);
  });
}

正在生成类型错误:

Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Schema<T>'.
No index signature with a parameter of type 'string' was found on type 'Schema<T>'.

因为我正在尝试通过schema类型的索引key访问string中的值。

我发现了类似的问题,但没有真正答案。 {p}不会告诉编译器我只有Extract<keyof T, string>类型的键,而没有string / number类型的键吗?

0 个答案:

没有答案