我是打字稿编程的初学者,无法设置属性接口类型,因此请为我提供指导。
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));
答案 0 :(得分:2)
您没有初始化声明中的$('#soid').text();
字段。因此,在使用方法adds
之前,您需要对其进行初始化:
sub
答案 1 :(得分:1)
目前尚不清楚adds
中的Calculator
是什么意思,但是您的代码中没有任何内容创建一个addition
对象并将其分配给{{ 1}},因此adds
是adds
,因此您无法访问undefined
上的属性。仅声明属性不会创建它。您必须创建一个或接收一个。 (但是我怀疑您根本不需要undefined
。)
FWIW:
adds
中的代码似乎很奇怪。它声明了从未使用过的属性(不需要,从提供的API中也不需要)。 Calculator
,adds
和num1
属性有什么作用?您接受数字作为num2
和add
的参数,而sub
本身就是Calculator
对象。
没有这些属性,那会更简单:
addition
答案 2 :(得分:1)
不确定,您要达到什么目的,但是我认为适当的设计应该是:
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));