【发布时间】:2020-07-30 04:35:22
【问题描述】:
const fullNameMaxLength = 10;
class Employee {
private _fullName: string;
set fullName(newName: string) {
if (newName && newName.length > fullNameMaxLength) {
throw new Error("fullName has a max length of " + fullNameMaxLength);
}
this._fullName = newName;
}
}
if (newName && newName.length > fullNameMaxLength)
我可以理解检查 newName 在 vanillaJS 中是否真实,但是在 Typescript 中这样做的目的是什么? Typescript 已经保证 newName 是字符串并且它具有 .length 属性。
完整代码在这里: https://www.typescriptlang.org/docs/handbook/classes.html
【问题讨论】:
-
TypeScript 在运行时不存在,进行基本的运行时检查以避免错误仍然很有用。
-
@jonrsharpe 但是所有代码都是 Typescript 并且经过编译以检查是否存在滥用。
-
TypeScript 不保证
newName是一个字符串并且具有length属性。它保证任何它知道的代码都会将该属性设置为string -
@HereticMonkey Monkey 我想我们说的是同一件事,但方式不同。
标签: typescript accessor notnull