TypeScript中`:后面的东西`叫做什么专业术语呢?
我们知道可以按照如下的方式定义泛型函数,并使用:
function swap<T>(a: T, b: T): void {
const temp = a;
a = b;
b = temp;
console.log(`a: ${a}, b: ${b}`);
}
// 调用泛型函数
swap<number>(1, 2); // 输出: "a: 2, b: 1"
swap<string>('hello', 'world'); // 输出: "a: world, b: hello"
但是我想要定义一个新的函数(以swap函数为类型)如何做呢?
我尝试下面的方式:
const testFun: swap<string> = (a: string, b: string) => {
}
但是会报错:
1、是否也就是说,不能以泛型函数为:后面的东西
对吗?2、:后面的东西
叫做什么专业术语呢?肯定不能说是类型(type),因为interface也可放在:后面。
回复
1个回答

test
2024-07-03
swap
又不是个类型,typeof swap
才是类型。const testFun: typeof swap<string> = (a, b) => { // 参数的类型已经不需要显式声明了,会自动推断成 string 的 // 当然你要愿意非得声明出来那也行 }
- 就叫“类型”,严格来说出现在函数参数里,叫“显式类型声明”( Explicit Types Declaration );出现在 var/let/const 变量里,叫“变量类型注解”( Type Annotations on Variables )。但总而言之就是 Type 。你说的那个
type
那只是一个关键字而已,并不影响这个玩意儿叫啥 —— 人家名字就叫 "TypeScript",那你打算咋理解开头的 "Type"?况且type
关键字定义出来的东西严格来说也应该叫“类型别名”( Type Alias )。
P.S. 从过往的提问来看感觉题主是在看某些 TS 项目的源码、但自己却没有系统地学习过 TS,所以东一榔头西一棒子的遇到啥问题了就跑过来问啥,我个人建议你先找个入门教程先自学一下,而且不要去纠结这些名词概念,这对入门没有帮助。等你学会了基本的语法之后,再去看这些概念性的东西,相互印证。
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容