gpt4 book ai didi

typescript - 检查一个对象(或一个类)是否有一个属性

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

假设我有一个类:

module MyModule {
export class MyClass {
x:number;
y:number;
}
}

然后我有一个字符串,“x”。如何检查 MyClass 是否具有属性“x”?

如果我创建一个 MyClass 实例然后执行:

myClassInstance.hasOwnProperty("x");

除非 x 设置了默认值,否则返回 false。但我不想为每个属性设置默认值。如果我什至可以在不创建 MyClass 实例的情况下执行此操作,那将是最好的。

最佳答案

TypeScript 在执行前被编译成 JavaScript。在最终的 JavaScript 代码中,TypeScript 的类型信息不再可用。因此无法在运行时检查 TypeScript 类型信息。


如果你想在编译时做检查,你可以使用如下例子中的接口(interface):

interface IHasX
{
x:any;
}

class MyClassA {
x:number;
y:number;
}

class MyClassB {
y:number;
}

function Test(param: IHasX)
{
// Do something with param.x
}

var objA = new MyClassA();
var objB = new MyClassB();

Test(objA);
Test(objB);

最后一行 Test(objB); 将无法编译,因为 TypeScript 编译器知道 objBMyClassB 类型并且那类没有接口(interface) IHasX 要求的名为 x 的属性。

关于typescript - 检查一个对象(或一个类)是否有一个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36308570/

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