我在Angular2中有以下类:
export class MyClass{
constructor(private a: string, private b: string, private c: string){}
public getA(): string {
return this.a;
}
public getB(): string {
return this.b;
}
public getC(): string{
return this.c;
}
然后我在另一个组件中使用此对象:
MyClass myClass = new MyClass('some', 'thing',
let path = myClass.getA() != null ? 'foo' :'bar';
但是,尝试在浏览器上运行时,我在控制台中收到以下错误:
ERROR TypeError: myClass.getA is not a function
我错过了什么吗?为了纠正这个问题,我发现的唯一方法是将变量声明为public(它也适用于private,但我的IDE - VS Code - 表示错误)并直接使用它们而不使用访问器方法。
答案 0 :(得分:0)
您使用错误的语法(Java?)来声明变量myClass。它应该是这样的:
const myClass:MyClass = new MyClass('some', 'thing', 'fff');
let path = myClass.getA() != null ? 'foo' :'bar';
答案 1 :(得分:-1)
可能是这样的......我想。
class MyClass {
private a: string;
private b: string;
private c: string; //<-------
constructor(private a: string, private b: string, private c: string) { }
public getA(): string { return this.a; }
public getB(): string { return this.b; }
public getC(): string { return this.c; }
}
MyClass myClass = new MyClass('some', 'thing', 'an');
let path = myClass.getA() != null ? 'foo' : 'bar';
console.log(path);
`
结果:https://www.typescriptlang.org/play/按预期给予了foo。