[英]not able to set property of interface type in typescript
我是Typescript编程的初学者,无法设置属性接口类型,因此请为我提供指导。
interface addition {
num1: number;
num2: number;
add(num1:number, num2:number): number;
}
class Calculator implements addition{
num1: number;
num2: number;
adds: addition; //
add(num1: number, num2: number): number {
return num1 + num2;
}
sub(num1: number, num2: number): number {
let sk: addition = new Calculator()
console.log(sk.add(2, 3));
this.adds.num1=12; // showing error here Uncaught TypeError: Cannot set property 'num1' of undefined
console.log(this.adds.num1)
return num1-num2
}
}
let cal = new Calculator();
console.log(cal.sub(2, 3));
您没有在声明中初始化adds
字段。 因此,在使用方法sub
之前,您需要对其进行初始化:
this.adds = //initialize with a value before using it in the next line.
this.adds.num1=12;
尚不清楚Calculator
的adds
是什么意思,但是您的代码中没有任何东西会创建一个addition
对象并将其分配给adds
,因此adds
是undefined
,您无法访问undefined
属性。 仅声明属性不会创建它。 您必须创建一个或接收一个。 (但我怀疑您根本不需要adds
。)
FWIW:
Calculator
的代码似乎很奇怪。 它声明了从未使用过的属性(不需要,从提供的API中也不需要)。 adds
, num1
和num2
属性分别是什么? 您接受数字作为add
和sub
参数,而Calculator
本身就是addition
对象。
如果没有这些属性,它将更加简单:
interface Addition {
add(num1:number, num2:number): number;
}
class Calculator implements addition {
add(num1: number, num2: number): number {
return num1 + num2;
}
sub(num1: number, num2: number): number {
return num1 - num2;
}
}
不确定您要达到的目标,但我认为适当的设计应为:
interface Addition {
add(num1: number, num2: number): number;
}
interface Subtraction {
sub(num1: number, num2: number): number;
}
class Calculator implements Addition, Subtraction {
add(num1: number, num2: number): number {
return num1 + num2;
}
sub(num1: number, num2: number): number {
return num1 - num2
}
}
let cal = new Calculator();
console.log(cal.add(1, 2));
console.log(cal.sub(2, 3));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.