gpt4 book ai didi

javascript - TypeScript 函数继承

转载 作者:太空狗 更新时间:2023-10-29 18:14:24 24 4
gpt4 key购买 nike

我什至不知道这在 TypeScript 中是否可行,但我正在尝试从类中继承一个函数,如下所示:

import {Component, AfterViewInit, ElementRef} from 'angular2/core';

@Component({})
class Class1 {
name: string;
constructor(private el: ElementRef) {}

private setName() {
this.name = "test";
}

ngAfterViewInit() {
this.setName();
}
}

@Component({
selector: 'test'
})
export class Class2 extends Class1 {
ngAfterViewInit() {
super.ngAfterViewInit();
console.log(this.name);
}
}

但是在调用 setName() 函数时我在控制台中收到以下错误:

EXCEPTION: TypeError: this.el is undefined

为什么这不起作用?

最佳答案

Constructors are not inherited.

他们是。以下示例显示了这一点:

class Parent {  
constructor(foo:number){}
}
class Child extends Parent {
}

const child1 = new Child(); // Error!
const child2 = new Child(123); // OKAY!

但这是 Angular

但是它们没有被分析依赖注入(inject)。这意味着您的子类构造函数不会使用与父类预期相同的参数调用(在您的情况下为`el)。您需要在每个子类上指定所有 DI 元素。所以碰巧正确的代码是来自已接受答案的代码:

@Component({
selector: 'test'
})
export class Class2 extends Class1 {
constructor(el: ElementRef) {
super(el);
}
}

关于javascript - TypeScript 函数继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35977843/

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