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;
}
}
如果(新名称)
我可以理解在vanillaJS中检查newName是否真实,但在Typescript中,这是为了什么?Typescript已经保证newName是string,并且它具有。长度属性。
完整代码在这里:https://www.typescriptlang.org/docs/handbook/classes.html
你不能只使用
newName > fullNameMaxLength
因为newName可以是未定义的/null,在这种情况下,您将得到一个未处理的错误。
Uncaught TypeError: Cannot read property 'length' of undefined
接下来,您需要检查newName.length并与fullNameMaxL长度进行比较。
假设所有代码都是typescript,并由typescript编译,并且所涉及的值都不是any
,那么这个存在性检查就没有任何意义了。
然而,正如其他评论者所指出的,如果任何代码都是纯javascript,或者作为库公开以在未知的代码库或环境中使用,那么类型安全就无法得到保证。因此,由开发人员决定是否进行双重检查。
但是,这里有一些方法,用这种方式写可能仍然是好的:
// foo.js
employee.fullName = null // not typescript so no error.
// foo.ts
const jsonData: any = { employees: [{ fullName: null }] } // data from a remote api
// no error because `any` be cast to any other type without error.
employee.fullName = jsonData.employees[0].fullName is any.
存在性检查将防止这两种情况引发错误。然而,下一行无论如何都会分配坏的值...
我认为,作为typescript文档中的一个例子,存在性检查可能不应该存在,因为它有点混乱。
以下代码中的“-97”是什么意思? 我们创建了一个由26个LinkedList组成的数组来模拟字典。每个列表包含以“a”、“b”、“c”、......“z”开头的所有单词。代码是由讲师给出的。 这里是附注: 在特定MyLinkedList中搜索单词的步骤 假设要搜索的单词位于名为wordstr的String类型变量中。 将允许您跳转到正确的链接列表,并且包含将返回true/false,这取决于单词
下面的代码是一个java方法,它遍历一个for循环,每次都创建一个新数组。我相信没有新数组实例化的代码是O(N),但有了新数组声明,我不确定。
据我所知,toString()方法允许类型转换,例如:int x=5,sys。。。。(x.toString())并将5打印到控制台。但与下面的代码相比,这样做的好处/坏处是什么?(并不是说我的更好,我真的很好奇) 这是我的代码:
我被赋予以下任务: 给出了-2个列表。第一个列表的大小为N1,第二个列表的尺寸为N2。每个列表的元素不相同。编写一段代码,用第一个和第二个列表中的元素创建一个新列表。此列表也不应有相同的元素。还要估计代码的复杂性。 我编写了以下代码: 并假设 getNewList 方法的执行时间与 N1*N2 成正比。在回复中,我收到以下内容,没有任何解释 - “你错了,这段代码的复杂性不是 N1*N2”。 那么
下拉列表包含和包含可见的: 我无法使用此代码: 我没有下拉列表的值。 在这种情况下,下拉列表的量角器代码应该是什么?
我想了两个小时,为什么这段代码不能产生预期的结果。如果我输入3个整数,比如3、4和5,它应该给出所有27个可能的和(假设数字可以是正的、负的或零) 因此,它应该产生以下内容: -3-4-5=-12 -3-4 0 = -7 -4-4 5=3 等等