Javascript 返回类型string |((args:ValidationArguments)=>;string)返回什么?

Javascript 返回类型string |((args:ValidationArguments)=>;string)返回什么?,javascript,typescript,Javascript,Typescript,这是从一本书中摘取的。我认为这意味着: 此函数返回一个字符串或一个函数,该函数将ValidationArguments作为参数,然后返回一个字符串 但这是我第一次看到这样的东西,所以我只是想确定我读对了吗 static getMessage(type: string, isEach: boolean): string|((args: ValidationArguments) => string) { 是的,你读对了,它叫a。联合类型允许创建可以是联合中任何一种类型的类型。可以使用类型保护

这是从一本书中摘取的。我认为这意味着:

此函数返回一个字符串或一个函数,该函数将
ValidationArguments
作为参数,然后返回一个字符串

但这是我第一次看到这样的东西,所以我只是想确定我读对了吗

static getMessage(type: string, isEach: boolean): string|((args: ValidationArguments) => string) {

是的,你读对了,它叫a。联合类型允许创建可以是联合中任何一种类型的类型。可以使用类型保护来缩小联合中的类型:

let f : string|((args: ValidationArguments) => string);
if(typeof f === 'string') {
    f // is string
}else{
    f(null) // f is a function 
}

是的,打字稿很神奇。您可以在返回类型上使用
,它可以是您可以在TS中声明的任何类型。它正好是一个函数或字符串。谢谢-我非常喜欢您在答案中演示证明的方式!