我正在尝试从应用程序中删除一些JS Flow类型语法,但我似乎无法准确地重构这一行。这是课堂宣言的一部分:
declare class Error {
static (message?:string): Error;
static call(x: any): void;
static captureStackTrace(x: any, x: any): void;
name: string;
message: string;
stack: string;
}
有问题的行是static (message?:string): Error;
。
这条线在做什么,如何在没有Flow的情况下重写它?
它看起来像一个方法,但没有名字....任何帮助将不胜感激!
答案 0 :(得分:1)
它是工厂功能的声明,只是与类声明合并
因此,您可以输入以下内容:const error = Error(message)
。
为了减少混淆,可以将其重写为constructor (message?: string): Error
然后,您需要使用new
:const error = new Error(message)
以下是两种方式的示例 - try flow
因此,如果没有流程,您只需编写一个返回Error对象的函数,如果不是string
,可能会检查其第一个参数是undefined
。
答案 1 :(得分:0)
我不是flow
的专业人士,但我会尝试回答你的问题。
这行做什么
该方法接受名为string
的可选message
变量,并返回Error
个对象。
如何在没有Flow的情况下重写它?
我认为您可以使用typeof
来检查变量的类型。您可以找到更多信息here
答案 2 :(得分:0)
据我了解,此定义是检查基本错误对象的输入类型。
这种Flow语义称为库定义,用于定义第三方库的类型检查。您可以在下面看到定义。
因此,您需要做的是创建一个自定义的Error函数,例如myError,然后将第一个参数类型检查为字符串。然后返回错误对象。