更新声明固定大小的阵列,用于类型检查:这些检查意味着编译时,而不是在运行时。在我的例子中,失败的案例都在编译时被捕获,并且我预计其他应该失败个案也会发生类似的行为。打字稿:如何在编译时
想我正在写一个类似表格类,我想在类的所有成员都成为相同长度的阵列,喜欢的东西:
class MyClass {
tableHead: string[3]; // expect to be a 3 element array of strings
tableCells: number[3]; // expect to be a 3 element array of numbers
}
我到目前为止发现的最接近的解决方案是:
class MyClass {
tableHead: [string, string, string];
tableCells: [number, number, number];
}
let bar = new MyClass();
bar.tableHead = ['a', 'b', 'c']; // pass
bar.tableHead = ['a', 'b']; // fail
bar.tableHead = ['a', 'b', 1]; // fail
// BUT these also pass, which are expected to fail at compile time
bar.tableHead = ['a', 'b', 'c', 'd', 'e']; // pass
bar.push('d'); // pass
bar.push('e'); // pass
有没有更好的办法?
你应该将你的成员数据包装在访问函数中。然后这些可以检查要求添加到阵列的参数数量和/或数据长度。 –
你的意思是'getter'和'setter'? – benjaminz
是的。使它们保持私密并提供方法来控制正在推送或从列表中删除的内容。那么你将有完全的控制 – iberbeu