TypeScript允许在String类型的常量上重载函数。
getElementsByTagName(name: "video"): NodeListOf<HTMLVideoElement>;
getElementsByTagName(name: "track"): NodeListOf<HTMLTrackElement>;
getElementsByTagName(name: string ): NodeList;
但是这段代码会导致解析器错误:
getElementsByTagName(name: 1 ): NodeListOf<HTMLVideoElement>;
getElementsByTagName(name: 2 ): NodeListOf<HTMLElement>;
getElementsByTagName(name: number): NodeList;
在Number类型的常量上重载函数是真的吗?
答案 0 :(得分:0)
TypeScript语言不支持此功能。
答案 1 :(得分:0)
在你提出这个问题之后,这种能力增加了很长一段时间,但谁知道呢?您可能仍在尝试编写该应用程序。
您可以在2018年的TypeScript中执行以下操作.Ryan可能参与使其成为可能......所以不要对他的回答很难,这在2014年是正确的。
function doSomething(n: 1): number[];
function doSomething(n: 2): string[];
function doSomething(n: 3): boolean[];
function doSomething(n: number): (number[] | string[] | boolean[]) {
switch (n) {
case 1:
return [1, 2, 3];
case 2:
return ['a', 'b', 'c'];
case 3:
return [true, false, true];
}
}
// number[]
const arr1 = doSomething(1);
// string[]
const arr2 = doSomething(2);
// boolean[]
const arr3 = doSomething(3);