不要使用对象作为类型

dan*_*y74 16 typescript eslint tslint

我收到 lint 错误:

不要使用对象作为类型

当我使用对象作为类型时,示例如下:

export const myFunc = (obj: object): string => {
  return obj.toString()
}
Run Code Online (Sandbox Code Playgroud)

知道我应该为具有未知属性的对象赋予什么类型吗?

如果有帮助的话,有问题的对象不是一个数组(我知道它严格来说是 JS 中的一个对象)

提前致谢

Eve*_*ert 8

有几种不同的方法可以做到这一点。一般来说,我觉得这种需要有点反模式。

Record<string, any>但如果这适合你的话,我可能会选择。


cap*_*ian 8

我认为这里最好的方法是使用通用的:

export const myFunc = <T extends { toString: () => string }>(obj: T): string => {
    return obj.toString()
}

myFunc(2) // no error
myFunc({}) // no error
Run Code Online (Sandbox Code Playgroud)

如果您想将参数限制为仅对象,那么是的,@Evert 的解决方案是好的。但为了类型安全,最好使用unknown而不是any

Record<string, unknown>
Run Code Online (Sandbox Code Playgroud)