javascript - 令人困惑的编译器错误 : Argument of type 'string' is not assignable to parameter of type

标签 javascript arrays typescript

我有一个包含可接受的 mime 类型的数组:

export const frontend = { 
  ...
  zipMimeTypes: [
    "application/zip",
    "application/x-zip-compressed",
    "multipart/x-zip",
  ],
} as const;

我想将它包含在另一个文件中并像这样使用它:

frontend.zipMimeTypes.includes(file.type)

但是,我的 TS 编译器提示 file.type

Argument of type 'string' is not assignable to parameter of type '"application/zip" | "application/x-zip-compressed" | "multipart/x-zip"'.

我只是这样做:

  [
    "application/zip",
    "application/x-zip-compressed",
    "multipart/x-zip",
  ].includes(file.type)

有效

最佳答案

问题出在 as const 中。相反,您可以定义一个接口(interface)来与前端一起使用:

interface Frontend {
  zipMimeTypes: string[];
}
const frontend: Frontend = {
  zipMimeTypes: [
    "application/zip",
    "application/x-zip-compressed",
    "multipart/x-zip"
  ]
};

关于javascript - 令人困惑的编译器错误 : Argument of type 'string' is not assignable to parameter of type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69980679/

相关文章:

javascript - wdio 异步调用在调用 promise 调用时丢弃 Selenium 连接

循环内的 JavaScript 闭包 – 简单的实际示例

python - 在 Python 中获取彩色形状周围边界的坐标

javascript - BrowserRouter 导致无效的钩子(Hook)调用。 Hooks 只能在函数组件的主体内部调用

html - 使用angular2上的按钮水平滚动

javascript - 尝试在页面加载时运行函数

php - 网址美化

arrays - 如何在Verilog中将二维数组中的所有位设置为0?

arrays - Flutter 从动态 json 响应创建动态小部件

angular - 在 Angular 应用程序中使用 graphql-codegen 时出现错误 "Object is of type unknown"