gpt4 book ai didi

arrays - TypeScript 类型化数组的使用

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

我有一个这样开头的 TypeScript 类定义;

module Entities {          

export class Person {
private _name: string;
private _possessions: Thing[];
private _mostPrecious: Thing;

constructor (name: string) {
this._name = name;
this._possessions = new Thing[100];
}

看起来 Thing 类型的数组没有正确转换为相应的 Javascript 数组类型。这是生成的 JavaScript 的片段:

function Person(name) {
this._name = name;
this._possessions = new Entities.Thing[100]();
}

执行包含 Person 对象的代码,尝试初始化 _possession 字段时抛出异常:

Error is "0x800a138f - Microsoft JScript runtime error: Unable to get value of the property '100': object is null or undefined".

如果我将 _possession 的类型更改为 any[] 并使用 new Array() 初始化 _possession,则不会抛出异常。我错过了什么吗?

最佳答案

您的语法有误:

this._possessions = new Thing[100]();

这不会创建“事物数组”。要创建事物数组,您可以简单地使用数组字面量表达式:

this._possessions = [];

数组构造函数如果要设置长度:

this._possessions = new Array(100);

我创建了一个简短的工作示例,您可以在 playground 中尝试.

module Entities {  

class Thing {

}

export class Person {
private _name: string;
private _possessions: Thing[];
private _mostPrecious: Thing;

constructor (name: string) {
this._name = name;
this._possessions = [];
this._possessions.push(new Thing())
this._possessions[100] = new Thing();
}
}
}

关于arrays - TypeScript 类型化数组的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12870291/

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