javascript - 将字符串作为变量传递给文字方法类型提示

标签 javascript typescript literals

我会将字符串类型的变量传递给外部库方法,该方法具有定义文字暗示的参数类型之一。以下是对我来说有问题的示例代码。代码有错误:“字符串”类型的参数不可分配给“文字”类型的参数。我该怎么做才能使此代码正常工作?

type Literal = 'A' | 'B' | 'C';

function isAWithLiteral(literal:Literal): boolean
{
    return literal === 'A';
}

console.log(isAWithLiteral('B'));
console.log(isAWithLiteral('A'));

function isAWithString(literal: string): boolean
{
    return isAWithLiteral(literal);
}

我想用我的界面完全覆盖外部库。我不会在我的任何代码中使用 Literal 依赖项,除非有一个适配器。

最佳答案

在首先检查您的字符串确实是 Literal 的值之一之后,您可以使用类型断言从 string 转到 Literal :

function isAWithString(literal: string): boolean
{
    if (literal !== 'A' && literal !== 'B' && literal !== 'C') {
    {
        throw new Error(`'literal' isn't a Literal: ${literal}`);
    }
    return isAWithLiteral(literal as any as Literal);
}

如果 Literal 是您自己的代码,我建议您改用 enum,以便需要执行此操作的代码可以遍历这些值。但是你说过它在外部库中,所以...

关于javascript - 将字符串作为变量传递给文字方法类型提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59114654/

相关文章:

python - 如何在 python 3 中将字节文字列表转换为字符串文字?

javascript - 使用react-native的自定义选项卡

javascript - Jquery 和 Jslint - '$' 在定义之前被使用

javascript - 当事件处理程序附加到父 HTML 元素时,如何防止默认事件操作?

javascript - 如何使用 puppeteer 获取 html 元素的所有子元素值

c++ - 如何在 C++ 中编写简短的文字?

java - 数字文字

javascript - 使用phantomsjs,如何获取一个值并将其分配给数组的元素?

android - ionic2 流媒体不工作

angular - ionic 2 : EXCEPTION: No provider for NavController