Angular 6 - 示例中的错误属性instanceof

标签 angular instanceof

我从 Angular 示例中获取了这段代码

import { Component, OnInit } from '@angular/core';
import { Hero } from '../hero';

@Component({
  selector: 'app-heroes',
  templateUrl: './heroes.component.html',
  styleUrls: ['./heroes.component.css']
})
export class HeroesComponent implements OnInit {
  hero: Hero = {
    id: 1,
    name: 'Windstorm'
  };

  constructor() { 
    console.log(this.hero instanceof Hero);
    console.log(this.hero instanceof Object);

    const otherHero = new Hero();
    console.log(otherHero);
  }

  ngOnInit() {
  }

}

控制台输出为:

false
true
true

如果属性 Hero 被定义为 Hero 类型,那么为什么 instanceof 给我 false ? 如果设置值后该属性不是 Hero 类型而是普通 Object 类型,那么将该属性声明为 Hero 类型有什么意义

最佳答案

  hero: Hero = {
    id: 1,
    name: 'Windstorm'
  };

在上面的代码中,您仅将英雄属性的类型声明为Hero,但您正在分配一个对象文字。应该是hero: Hero = new Hero(),那么只有this.hero instanceOf Hero属性会返回true

说明:

JavaScript 是一种基于原型(prototype)的语言。所有其他类(包括 String、Array)的基类是 Object。因此,在您的情况下,您正在使用对象文字 {} 创建一个对象。 Typescript 不会显示任何错误,因为 Hero 类也从 Object 扩展。

关于Angular 6 - 示例中的错误属性instanceof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54825474/

相关文章:

javascript - Angular:样式或类绑定(bind)、座位图

node.js - 在带 Angular Electron 内部使用keytar

Angular - 组件中 module.id 的含义是什么?

jsf - EL表达式语言中的instanceof检查

javascript - 为什么动态对象可以有效地设置为 typescript 中的类

java - int 整数实例

javascript - 从 PrimeNG 覆盖 'MultiSelect' 组件中的函数

HTML5 视频标签访问进度事件属性已加载和总计

java - 尝试使用转换时出错,java

具有变化对象的 Java instanceof