gpt4 book ai didi

javascript - 用于类型检查和编译错误的 Typescript 外部函数

转载 作者:行者123 更新时间:2023-12-03 03:54:01 25 4
gpt4 key购买 nike

事实:我正在使用 TS v.2.3.4。我创建了一个函数来检查是否定义了可变量(它接受 variable 作为参数并返回 'undefined' !== typeof variable )。小菜一碟。

export function IsDefined(variable: any): boolean {
return 'undefined' !== typeof variable;
}

问题:下面的代码在第 2 行产生警告。警告说对象可能未定义

if (IsDefined(myVar)) {
myVar.mockProperty = "asdf"; //Object (myVar, obviously) is possibly undefined
}

问题:有什么方法可以告诉 TS 编译器 IsDefined()方法根据未定义的值检查变量,因此它不会发出虚假信息的警告?还有其他方法可以解决这个问题吗?

我知道但不愿意使用的解决方法,因为它们使代码变得不干净:

  • (<myType>myVar).mockProperty = "asdf";
  • if ("undefined" !== typeof myVar) {

最佳答案

您想在此处使用类型保护。更改 IsDefined 的定义:

export function IsDefined(variable: any): variable is {} {
return 'undefined' !== typeof variable;
}

现在编译器将知道从 IsDefined 返回 true 的任何内容都是一个对象,而不是 undefined

关于javascript - 用于类型检查和编译错误的 Typescript 外部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45033048/

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