Javascript 我能';我不理解这种奇怪的JS流语法

Javascript 我能';我不理解这种奇怪的JS流语法,javascript,flowtype,Javascript,Flowtype,我试图从应用程序中删除一些JS流类型语法,但似乎无法准确地重构这一行。这是类声明的一部分: 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; } 有问题的行是静态的(消息?

我试图从应用程序中删除一些JS流类型语法,但似乎无法准确地重构这一行。这是类声明的一部分:

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;
}
有问题的行是静态的(消息?:字符串):错误

这行代码在做什么,我如何在没有流的情况下重写它?


它看起来像一个方法,但没有名称。。。。任何帮助都将不胜感激

我不是
flow
方面的专家,但我会尽力回答您的问题

这条线在干什么

该方法接受名为
message
的可选
string
变量,并返回
Error
对象

没有流程,我如何重写它


我认为您可以使用
typeof
检查变量的类型。您可以找到更多信息

这是一个工厂函数的声明,刚刚与类声明合并。
因此,您可以键入检查:
const error=error(message)

为了减少混淆,可以将其重写为
构造函数(message?:string):Error

然后您需要使用
new
const error=new error(message)

以下是两种方法的示例-


因此,如果没有流,您只需要编写一个返回错误对象的函数,并且可能会检查它的第一个参数是否为
字符串
,如果不是
未定义的
,,根据我的理解,这个定义是检查原语错误对象的输入类型

这种流语义称为库定义,用于定义第三方库的类型检查。你可以看到下面的定义


所以,您需要做的是创建一个定制的错误函数,比如myError,并将第一个参数类型检查为string。然后返回错误对象

该方法的名称是什么?它没有像“call”或“captureStackTrace”这样的声明名称。