gpt4 book ai didi

typescript - 在 TypeScript 中使用重载或可选参数有什么区别吗?

转载 作者:搜寻专家 更新时间:2023-10-30 21:07:33 25 4
gpt4 key购买 nike

我想知道以下代码块是否有任何区别?第一个创建 readText 函数的 2 个定义。我会用第二种方式写它,带有一个可选参数。

readText(fileName: string, def: string): WinJS.Promise;
readText(fileName: string): WinJS.Promise;

readText(fileName: string, def?: string): WinJS.Promise;

有什么理由不使用可选参数吗?

最佳答案

从类型兼容性的角度来看,这些在实践中是无法区分的。

但是,第二个版本稍微好一些,因为只有具有单个重载的函数才能应用上下文类型。例如:

interface Read1 {
readText(fileName: string, def: string): any;
readText(fileName: string): any;
}
// No contextual type applied because readText has multiple signatures
// 's' of type 'any', no error raised
var x: Read1 = { readText: (s) => s.subtring(s) };

interface Read2 {
readText(fileName: string, def?: string): any;
}
// Contextual type applied
// 's' of type 'string', error identified
var y: Read2 = { readText: (s) => s.subtring(s) };

关于typescript - 在 TypeScript 中使用重载或可选参数有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20432669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com