当前位置: 首页 > 知识库问答 >
问题:

使用Typescript检查接口类型

籍昱
2023-03-14

这个问题直接类似于使用TypeScript进行类类型检查

interface A{
    member:string;
}

var a:any={member:"foobar"};

if(a instanceof A) alert(a.member);
var a = {
    member: "foobar"
};
if(a instanceof A) {
    alert(a.member);
}

共有1个答案

韩嘉祯
2023-03-14

您可以在不使用instanceof关键字的情况下实现所需的功能,因为您现在可以编写自定义类型保护:

interface A{
    member:string;
}

function instanceOfA(object: any): object is A {
    return 'member' in object;
}

var a:any={member:"foobar"};

if (instanceOfA(a)) {
    alert(a.member);
}

如果需要检查大量成员以确定对象是否与您的类型匹配,则可以添加一个鉴别器。下面是最基本的例子,并要求您管理自己的鉴别器...您需要更深入地了解模式,以确保避免重复的鉴别器。

interface A{
    discriminator: 'I-AM-A';
    member:string;
}

function instanceOfA(object: any): object is A {
    return object.discriminator === 'I-AM-A';
}

var a:any = {discriminator: 'I-AM-A', member:"foobar"};

if (instanceOfA(a)) {
    alert(a.member);
}
 类似资料:
  • 问题内容: 这个问题是使用TypeScript进行类类型检查的直接类比 我需要在运行时找出类型为any的变量是否实现了接口。这是我的代码: 如果在打字机游乐场输入此代码,则最后一行将被标记为错误,“名称A在当前作用域中不存在”。但这不是事实,该名称确实存在于当前范围内。我什至可以将变量声明更改为无编辑者的抱怨。浏览完网络并在SO上找到另一个问题后,我将接口更改为一个类,但是后来我无法使用对象文字来

  • 我在TypeScript中使用一个接口来定义一个函数,该函数仅在扩展基类的一些类上可用。这是我到目前为止的代码的简化版本: 现在,问题是我会添加更多的“行走”动物,这样移动动物的功能就会变得太大而无法控制。我想做的事情是这样的: 但是,“implements”检查不起作用,在使用接口时,我找不到与“instanceof”等效的。在Java中,“instanceof”的使用似乎可以在这里使用,但Ty

  • 本文向大家介绍TypeScript 类接口,包括了TypeScript 类接口的使用技巧和注意事项,需要的朋友参考一下 示例 public在接口中声明变量和方法,以定义其他打字稿代码如何与之交互。 在这里,我们创建一个实现接口的类。 该示例说明如何创建一个接口ISampleClassInterface和一类SampleClass是implements接口。

  • 这些语句(接口vs类型)有什么区别?

  • 我正在从事一个Ionic/Angular项目,我正在尝试消除html文件中的类型检查问题。 我的. ts文件中有一个htest变量,如下所示 Typescript似乎对此很满意。我循环在我的html视图中显示它们,就像这样 但当我使用usr.value访问fn和ln时,typescript不理解它们是什么(红色下划线)。fn或usr.value。ln在html中,如上所述,带有keyvalue管道