[英]How to deal with optional parameters in browser API when using TypeScript
例子:
Error构造函数( new Error([message[, fileName[, lineNumber]]])
)有两个我想使用的可选参数(fileName 和 lineNumber),但 TypeScript 编译器抱怨以下错误消息Expected 0-1 arguments, but got 3
。
在 TypeScript 中防止这种错误的正确方法是什么?
message
:可选。 人类可读的错误描述。
fileName
: 可选的。 创建的Error
对象上的fileName
属性的值。 默认为包含调用Error()
构造函数的代码的文件的名称。
lineNumber
: 可选的。 创建的Error
对象上的lineNumber
属性的值。 默认为包含Error()
构造函数调用的行号。
那些大黄色警告的标题是“此 API 尚未标准化”。 (您可以在悬停时看到)。 如果您查看文档底部的兼容性表,它目前表示只有 Firefox 支持这些参数。 其他浏览器和节点没有。
所以我猜 TypeScript 没有将它们包含在Error
构造函数的标准库定义中的原因是因为它不能保证在所有 JavaScript 环境中都能工作。
现在,如果您确定运行发出的 JS 代码的环境确实支持这些参数(即,如果您只打算在 Firefox 中运行代码),则可以在自己的 TypeScript 代码中使用声明合并来添加适当的签名:
// assuming your code is in a module, so using global augmentation here
declare global {
interface ErrorConstructor {
new(message?: string, fileName?: string, lineNumber?: number): Error;
}
}
然后编译器不会警告你:
export const iAmInAModule = true;
throw new Error("Badness happened", "badthing.js", 123); // no compiler warning now
如你所愿。
希望有所帮助; 祝你好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.