当前位置: 首页 > 知识库问答 >
问题:

前端 - TypeScript中`:后面的东西`叫做什么专业术语呢?

卢恩
2023-05-26

我们知道可以按照如下的方式定义泛型函数,并使用:

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) => {
  
}

但是会报错:
image.png


1、是否也就是说,不能以泛型函数为:后面的东西对吗?
2、:后面的东西叫做什么专业术语呢?
肯定不能说是类型(type),因为interface也可放在:后面。

共有3个答案

公孙宏远
2023-05-26

: 后面的东西叫类型,<T> 里面的东西 T 叫泛型参数,可以当作类型来使用。

你想要的 Swap 类型可以这么声明:

type Swap<T> = (a: T, b: T) => void;

或者

interface Swap<T> {
  (a: T, b: T): void;
}

那么,可以这么用

const testFunc: Swap<string> = (a: string, b: string) => { };
蒯安平
2023-05-26

1.你不能直接泛型函数作为类型注解,你要新建一个类型别名来

type SwapFunction<T> = (a: T, b: T) => void;

const testFun: SwapFunction<string> = (a, b) => {
  // ...
};

2.类型注解(Type Annotation)
可以看看这篇文章;使用TypeScript类型注解,编写更干净的JS代码

杜诚
2023-05-26
  1. swap 又不是个类型,typeof swap 才是类型。

    const testFun: typeof swap<string> = (a, b) => { 
      // 参数的类型已经不需要显式声明了,会自动推断成 string 的
      // 当然你要愿意非得声明出来那也行
    }
  2. 就叫“类型”,严格来说出现在函数参数里,叫“显式类型声明”( Explicit Types Declaration );出现在 var/let/const 变量里,叫“变量类型注解”( Type Annotations on Variables )。但总而言之就是 Type 。你说的那个 type 那只是一个关键字而已,并不影响这个玩意儿叫啥 —— 人家名字就叫 "TypeScript",那你打算咋理解开头的 "Type"?况且 type 关键字定义出来的东西严格来说也应该叫“类型别名”( Type Alias )。

P.S. 从过往的提问来看感觉题主是在看某些 TS 项目的源码、但自己却没有系统地学习过 TS,所以东一榔头西一棒子的遇到啥问题了就跑过来问啥,我个人建议你先找个入门教程先自学一下,而且不要去纠结这些名词概念,这对入门没有帮助。等你学会了基本的语法之后,再去看这些概念性的东西,相互印证。

 类似资料:
  • 新手入门 - 专业术语 操作系统 访客浏览您网站时使用的操作系统名称。 百度推广 百度推广给您网站带来的流量及转化情况。您可以及时了解百度各类推广方式的效果以及这些效果是否达到了您预期的业务目标,从而帮助您更有针对性地改善百度推广方案。 DEF 返回 Flash版本 访客浏览器程序中安装的 Flash 版本。 地域分布 各个地域带来的流量及转化情况。您也可以选择来源过滤,查看特定来源下,各地域的流

  • 本文介绍了Electron开发时常用的专业属于. ASAR 含义:ASAR即Atom Shell 程序包 ​asar类似常用的 tar 格式文件,Electron 无需解压即可读取其中的文件。 ​asar的使用方法,通常用来将文档打包在一个.asar中,防止js,html,css等文件直接暴露在外. 简单例子: 1 安装:$ npm install asar -g 2 压缩:$ asar pack

  • alphabeticfield 字母域 characterfield 字符域 binary digit 二进制数 chatter set 字符集 bit 位 cin(standard input) 标准输人 byte 字节 clog(standarderrorbuffeted) 缓冲标准错误流 cerr(standard err unbuffered) 无缓冲标准错误流 close a file

  • abort() catch an exception 捕获一个异常 assert macro assert 宏 catch argument catch参数 auto_ptr catch block catch块 bad_alloc catch(...) bad_cast dynamic_cast bad_typeid empty exception specification 空异常指定 cat

  • angle brackets 尖括号 keyword temPlate 关键字 template class template 类模板 non-type parameter in a templateheader 模板首 class template name 类模板名 部中的无类型参数 formal parameter in a template header 模板首部中的形式参数 overlo

  • bad member function bad 成员函数 end-of-file 文件尾 badbit endl cerr eof member function eof 成员函数 cin eofbit clear member function clear 成员函数 extensibility 可扩展性 clog fail member function fail 成员函数 cout failb