首页 > 解决方案 > 调用属于联合类型的函数?

问题描述

在此代码示例中

static replaceMessageSpecialTokens(message: string|((args: ValidationArguments) => string),
                            validationArguments: ValidationArguments): string {

    let messageString: string;
    if (message instanceof Function) {
        messageString = (message as (args: ValidationArguments) => string)(validationArguments);

作者这样调用函数(当它是函数时​​):

 messageString = (message as (args: ValidationArguments) => string)(validationArguments);

好奇为什么不:

      messageString = message(validationArguments);

在这种情况下,Typescript 是否会因为缺少打字而吠叫?我们有一个类型保护Function,我们知道函数签名将是什么,所以额外的类型规范感觉是多余的......

标签: javascripttypescript

解决方案


推荐阅读