typescript - 属性“zeroValue”没有初始值设定项,也没有在构造函数中明确分配
问题描述
我正在学习打字稿,这段代码与泛型(泛型类)相关,并且存在于打字稿的文档中。有什么问题?
class GenericNumber
{
zeroValue: T;
add: (x: T, y: T) => T;
}
let myGenericNumber = new GenericNumber();
myGenericNumber.zeroValue = 0;
myGenericNumber.add = function(x, y)
{
return x + y;
};
错误:属性 'zeroValue' 没有初始化程序,并且未在构造函数中明确分配。 ts(2564)
解决方案
首先,分享您的 TypeScript 代码的最佳方式是在TypeScript 游乐场上发布它
我想你在谈论这个例子
// you missed generic initializer
class GenericNumber<T> { // you missed generic initializer
// here TS compiler throws error because you only defined a type of class
// property, but you did not initialize it
zeroValue: T;
add: (x: T, y: T) => T;
}
let myGenericNumber = new GenericNumber<number>(); // you missed generic initializer
myGenericNumber.zeroValue = 0;
myGenericNumber.add = function (x, y) {
return x + y; // no error
};
工作示例
class GenericNumber<T> {
// to get rid of error, you can define constructor
// which takes [zeroValue] and [add] as arguments
constructor(public zeroValue: T, public add: (x: T, y: T) => T){
this.zeroValue = zeroValue;
this.add = add;
}
}
const zeroValue = 0;
let myGenericNumber = new GenericNumber<number>(zeroValue, (a,b)=>a+b);
const result = myGenericNumber.add(40,2) // 42
确保你的函数不处理this,因为在这种情况下你应该处理它
推荐阅读
- php - PHP中加载的Excel文档上的一个表列太多
- python - 验证损失在大范围内随机平衡,但训练损失正在完美减少
- python - 使用 EBO 时 OpenGL 崩溃
- typescript - 如何纠正类型 typeof 类没有索引?
- python - 无法从现有的两个列在 Pandas 数据框中创建新列
- node.js - MongoDB 更新数组内数组中的项
- java - 带有 Spring 和 Reactor 的 UnsupportedMediaTypeException
- python - 如何向 KivyMD MDDialog 中的按钮添加操作?
- c++ - 强制将对象创建为 shared_ptr 的断言?
- scala - 默认情况下,Scala Futures 会默默地丢弃异常 - 我可以更改它吗?