gpt4 book ai didi

javascript - TypeScript 类在强制转换中使用但未加载

转载 作者:行者123 更新时间:2023-12-03 06:06:51 27 4
gpt4 key购买 nike

我已经在 TypeScript 中创建了一个模型,并在强制转换中使用它。运行应用程序时,模型未加载,我无法使用该模型上的任何功能。

型号

export class DataIDElement extends HTMLElement {
get dataID(): number {
var attributes: NamedNodeMap = this.attributes;
var dataIDAttribute: Attr = attributes.getNamedItem("data-id");

if (!dataIDAttribute) {
//throw error
}

var value: number = Number(dataIDAttribute.value);
return value;
}
}

Angular 组件(模型导入位置)

import { DataIDElement } from '../../models/dataIdElement';

export class PersonComponent
{
personClicked(event: KeyboardEvent): void {
var element: DataIDElement = <DataIDElement>event.target;

// This code always returns undefined (model isn't loaded)
var personID: number = element.dataID;
}
}

最佳答案

你正在做的是类型断言。这只会覆盖编译器的类型推断,使其相信 event.target 属于 DataIDElement 类型。它不会创建 DataIDElement 的新实例。

如果您想创建 DataIDElement 实例,则需要使用 new 创建它。

DataIDElement 看起来像这样:

export class DataIDElement extends HTMLElement {
constructor(private target: HTMLElement) {}
get dataID(): number {
var attributes: NamedNodeMap = this.target.attributes;
var dataIDAttribute: Attr = attributes.getNamedItem("data-id");

if (!dataIDAttribute) {
//throw error
}

var value: number = Number(dataIDAttribute.value);
return value;
}
}

并且会像这样使用:

import { DataIDElement } from '../../models/dataIdElement';

export class PersonComponent
{
personClicked(event: KeyboardEvent): void {
var element: DataIDElement = new DataIDElement(event.target);

// This code always returns undefined (model isn't loaded)
var personID: number = element.dataID;
}
}

关于javascript - TypeScript 类在强制转换中使用但未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39504318/

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