ES6 typescript class 在里面创建自己的对象
ES6 typescript class create object of itself inside
我创建了一个 class 并在其中 class 我想创建一个由对象本身组成的数组。正常情况下javascript如果实现如下
class Person{
constructor(name){
this.name=name;
}
setList(list){
let listItem=[];
for(const lt of list){
listItem.push(new this.constructor(lt));
}
return listItem;
}
}
打字稿
class Person{
name:string;
constructor(name){
this.name=name;
}
setList=(list:Array<string>)=>{
let listItem=[];
for(const lt of list){
listItem.push(new this.constructor(lt));
}
return listItem;
}
}
我在代码 this.constructor(lt)
上面得到错误如下
This expression is not constructable.
Type 'Function' has no construct signatures.ts(2351)
在 TypeScript 中,class 中 this.constructor
的类型总是 Function
;但是,TypeScript 允许您在其声明中引用 class,因此,只需将 this.constructor
替换为 class、(Person
)本身的名称会工作正常。见下文:
class Person {
name: string;
constructor(name: string) {
this.name = name;
}
setList = (list: Array<string>) => {
let listItem = [];
for (const lt of list) {
listItem.push(new Person(lt));
}
return listItem;
};
}
如果您绝对需要采用 this.constructor
方式,您可以像这样强类型构造函数:
class Person {
name: string;
["constructor"]: typeof Person;
constructor(name: string) {
this.name = name;
}
setList = (list: Array<string>) => {
let listItem = [];
for (const lt of list) {
listItem.push(new this.constructor(lt));
}
return listItem;
};
}
希望对您有所帮助!
我创建了一个 class 并在其中 class 我想创建一个由对象本身组成的数组。正常情况下javascript如果实现如下
class Person{
constructor(name){
this.name=name;
}
setList(list){
let listItem=[];
for(const lt of list){
listItem.push(new this.constructor(lt));
}
return listItem;
}
}
打字稿
class Person{
name:string;
constructor(name){
this.name=name;
}
setList=(list:Array<string>)=>{
let listItem=[];
for(const lt of list){
listItem.push(new this.constructor(lt));
}
return listItem;
}
}
我在代码 this.constructor(lt)
上面得到错误如下
This expression is not constructable.
Type 'Function' has no construct signatures.ts(2351)
在 TypeScript 中,class 中 this.constructor
的类型总是 Function
;但是,TypeScript 允许您在其声明中引用 class,因此,只需将 this.constructor
替换为 class、(Person
)本身的名称会工作正常。见下文:
class Person {
name: string;
constructor(name: string) {
this.name = name;
}
setList = (list: Array<string>) => {
let listItem = [];
for (const lt of list) {
listItem.push(new Person(lt));
}
return listItem;
};
}
如果您绝对需要采用 this.constructor
方式,您可以像这样强类型构造函数:
class Person {
name: string;
["constructor"]: typeof Person;
constructor(name: string) {
this.name = name;
}
setList = (list: Array<string>) => {
let listItem = [];
for (const lt of list) {
listItem.push(new this.constructor(lt));
}
return listItem;
};
}
希望对您有所帮助!