什么编程语言有冒号"inside"并"after"函数的参数



我发现了这个函数,我一直在寻找具有以下语法的编程语言:

function getDiscount(items: Item[]): number {
if(items.length === 0){
throw new Error("Items cannot be empty");
}
let discount = 0;
items.forEach(function(item) {
discount += item.discount;
})
return discount/100;}

参数由冒号(:(分隔,然后参数后面跟着另一个冒号。我试图在控制台上运行代码,但我遇到了一个错误";未捕获的语法错误:意外的标记":";

我能找到的最接近的是Python的函数注释,然而,参数后面跟着一个箭头而不是冒号。

我还想知道第一行的代码是什么意思——参数和参数后面的内容。我的理解是,将要传递的参数将被插入到一个数组中,并且将返回的数据类型是一个数字。如果我错了,请纠正我。

此代码是用TypeScript编写的(https://www.typescriptlang.org),是JavaScript的超集。TypeScript代码是添加了类型的有效JavaScript
实际上,如果删除了类型注释,就可以在浏览器控制台中运行以下代码:

function getDiscount(items) {
if(items.length === 0){
throw new Error("Items cannot be empty");
}
let discount = 0;
items.forEach(function(item) {
discount += item.discount;
})
return discount/100;
}

TypeScript需要转换为JavaScript,以便在浏览器或NodeJS中使用。转换过程被称为"transpiling",它类似于编译,但更像是从一种人类可读的语言到另一种语言的转换,而不是从人类可读到机器可读的典型转换。(我根据Caius Jard的建议更新了此描述(

函数定义中的类型注释意味着它将Item类型的项数组作为参数,并返回number类型。从代码中,我们可以说类型Item是一个至少有一个类型为number的键discount的对象。此代码将遍历Item的数组,并返回所有折扣的总和。

最新更新