gpt4 book ai didi

javascript - 语言不可知-函数和构造函数参数中的允许类型

转载 作者:行者123 更新时间:2023-12-02 13:20:06 26 4
gpt4 key购买 nike

大多数(如果不是全部)静态类型的语言允许您为函数或构造函数参数指定单个类型。例如

function foo(x: string) { ... }

foo("hello") // works
foo(123) // error

TypeScript是JavaScript的静态类型超集,但是由于JavaScript是动态类型的语言,因此TypeScript可以使您更加灵活。例如,您可以指定多个允许的类型。
function foo(x: string | number) { ... }

foo("hello") // works
foo(123) // works
foo(true) // error

此外,在TypeScript中,这允许您将通用类型参数仅限制为特定类型;例如:
class Foo<T extends number | string> {
constructor(x: T) { ... }
}

new Foo("hello") // works
new Foo(123) // works
new Foo(true) // fails

问题

我喜欢TypeScript仅将通用类型参数限制为特定类型的功能,但我也希望能够使用其他语言(例如C#和Kotlin)来做到这一点,但据我所知,这些语言中没有等效的构造支持这种约束。用其他语言如何做到这一点?

注意:我很高兴接受任何语言的答案,而不仅仅是列出的答案。这更多地是关于更高层次的思考和探索可能适用于多种语言的其他途径。

最佳答案

C++ 20有一个concept的概念,它能够以您想要的方式约束模板参数,以及更多。这在语言中引入了可以使用多种技术近似的东西,此处描述它们似乎超出了范围。

关于javascript - 语言不可知-函数和构造函数参数中的允许类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58913013/

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