gpt4 book ai didi

typescript - 在不分配新变量的情况下在 TypeScript 中键入断言

转载 作者:搜寻专家 更新时间:2023-10-30 21:08:59 24 4
gpt4 key购买 nike

我有一个函数,它使用两个接口(interface)之一返回值,如下所示:

interface K {
A:number;
NUM:number;
}

interface L {
A:string;
STR:string;
}

function FUN():K|L { }

var x:K|L = FUN();

但我无法使用像这样的类型保护来访问非共享属性:

if(typeof x.A === 'string'){
console.log(x.STR) // Property 'STR' does not exist on type 'K | L'
}

尽管 if 子句确实区分了这两种类型。我知道我可以使用 as 运算符和变量赋值来向编译器指示类型,如下所示:

if(typeof x.A === 'string'){
var y = x as L;
console.log(y.STR) // OK
}

但这似乎有点笨拙,因为这会在生成的 js 代码中添加不必要的 var 语句和赋值:

function FUN() { }
var x = FUN();
if (typeof x.A === 'string') {
var y = x; // unnecessary...
console.log(y.STR);
}

有没有办法在JS代码中不加var y=x;来表示这种情况下的类型?

最佳答案

是的,TypeScript 支持类型转换。你应该能够做到:

if(typeof x.A === 'string'){
console.log((<L>x).STR);
}

关于typescript - 在不分配新变量的情况下在 TypeScript 中键入断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35954695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com