TypeScript允许在两种类型之间进行隐式转换

时间:2019-10-17 03:22:11

标签: typescript

给出以下代码:

interface A {
    readonly value: number;
}

function f(a: A) {
    if (a.value === 1) {
        // compiler error that 2 cannot be assigned to a
        // a = 2;
        // no compiler error
        a = 2 as unknown as A;
        // a.value will now return 2
    }
}

是否可以在没有显式强制转换的情况下隐式地进行接口A和数字之间的转换?基本上在A接口上添加一些类型信息,说可以始终为该类型分配一个数字吗?

我的JavaScript在支持操作符重载的非标准环境(Salesforce Commerce Cloud /需求软件)中运行,因此为该属性分配一个数字最终会为该属性创建一个新对象-实际上并未将属性本身更改为一个数字(因此以后您仍然可以将属性作为原始对象类型读取)。

如果我可以说函数参数“ a”在读取时是接口A,但在写入/分配时是数字,那也可以工作-但可以肯定的是,还不可能,请为读取/写入使用单独的类型。

很抱歉,如果已经问过或问错了地方。我发现与此相关的所有对话都是希望TypeScript能够支持此类事情的运行时代码的人们。我不想更改我的运行时代码或添加任何新功能,我只想能够正确定义现有的运行时代码已经在做什么。

0 个答案:

没有答案