type的定义

type:其作用就是给类型起一个新名字,可以作用于原始值(基本类型),联合类型,元组以及其它任何你需要手写的类型

type Second = number; // 基本类型
let timeInSecond: number = 10;
let time: Second = 10;  // time的类型其实就是number类型
type userOjb = {name:string} // 对象
type getName = ()=>string  // 函数
type data = [number,string] // 元组
type numOrFun = Second | getName  // 联合类型

注意:起别名不会新建一个类型 - 它创建了一个新名字来引用那个类型。给基本类型起别名通常没什么用。类型别名常用于联合类型。


type的应用以及与interface的区别

  1. 和接口一样,用来描述对象或函数的类型
type User = {name: stringage: number
};
type SetUser = (name: string, age: number)=>void;

在ts编译成js后,所有的接口和type 都会被擦除掉。

  1. 扩展和实现(extends & implement)

接口可以扩展,但type不能extends和implement,但是type可以通过交叉类型实现interface的extends行为。interface 可以extends type,同时type也可以与interface类型交叉

interface Name {name: string;
}
interface User extends Name {age: number;
}
let stu:User={name:'wang',age:10}// 上面的扩展可以用type交叉类型来实现
type Name = {name: string;
}
type User = Name & { age: number  };
let stu:User={name:'wang',age:1}
console.log(stu)// interface 扩展 type
type Name = {name: string;
}
interface User extends Name {age: number;
}
let stu:User={name:'wang',age:1}// type 与 interface 交叉
interface Name {name: string;
}
type User = Name & {age: number;
}
let stu:User={name:'wang',age:1}
  1. 接口的声明合并

接口可以定义多次,并将被视为单个接口(即所有声明属性的合并)。而 type 不可以定义多次。

interface User {name: stringage: number
}interface User {sex: string
}
let user:User={name:'wang',age:1,sex:'man'}
  1. 映射类型

type 能使用 in 关键字生成映射类型,但 interface 不行。

type Keys = "name" | "sex"type DulKey = {[key in Keys]: string    // 类似for...in
}let stu: DulKey = {name: "wang",sex: "man"
}

TypeScript杂谈(一)——type关键字相关推荐

  1. 【进阶】TypeScript 中的 Type

    一 .什么是 TypeScript TypeScript 是静态编程语言 , 是 JavaScript 的超集 简而言之:JavaScript 有的 TypeScript 都有.JavaScript ...

  2. Go 学习笔记(27)— type 关键字(类型定义、类型别名、类型查询、定义接口、定义结构体)

    1. 类型别名定义 定义类型别名的写法为: type TypeAlias = Type 类型别名规定: TypeAlias 只是 Type 的别名,本质上 TypeAlias 与 Type 是同一个类 ...

  3. 3.type关键字.rs

    /* 你可以使用 type 关键字声明另一类型的别名(用法和C++一样一样的) 类型别名:type aliases type Name = String;type 也可以用来声明trait的关联类型, ...

  4. Scala-Unit6-final/type关键字、样例类样例对象

    一.关键字 1.final关键字 用final修饰的类:不能被继承 用final修饰的方法:不能被重写 注意:(1)在Scala中变量不需要用final修饰,因为val与var已经限制了变量是否可变 ...

  5. scala type关键字用于起别名

    type关键字相当于给类型起了个别名 object SeqDemo extends App {//给类型String起个别名s,type s = String//定义一个s类型的变量,就相当于定义一个 ...

  6. go语言中的type关键字

    type关键字 type是go语法里的重要而且常用的关键字,type绝不只是对应于C/C++中的typedef.搞清楚type的使用,就容易理解go语言中的核心概念struct.interface.函 ...

  7. typeScript interface和type区别

    typeScript interface和type区别 interface 参考资料 ----> https://www.tslang.cn/docs/handbook/interfaces.h ...

  8. typescript error TS2322: Type ‘Timeout‘ is not assignable to type ‘number‘.

    源码 const timer:number = setTimeout(()=>{},1) 报错 typescript error TS2322: Type 'Timeout' is not as ...

  9. typescript Awaited<Type>教程用法

    typescript Awaited教程用法 文章目录 typescript Awaited<Type>教程用法 ts4.5发布了Awaited,但是很多人不明白Awaited的用法. 首 ...

最新文章

  1. C/C++ VS中调用matlab函数的方法
  2. 自定义C++异常处理
  3. 小试牛刀:文本处理工具之grep、egrep详解
  4. [leetcode]Largest Rectangle in Histogram @ Python
  5. (转载)图像处理(卷积)
  6. Java架构师发展路线
  7. Fall 2020 Berkeley cs61a hw04答案
  8. IT 软件测试 ——轻松月入过20K 测试工程师年薪35W
  9. 前端页面局部(全局)刷新方法
  10. 智能云门禁解决方案来了
  11. 如何增加架设传奇服务器,做为一个新手如何架设传奇
  12. 李宏毅2021春季机器学习课程视频笔记1:Introduction, Colab PyTorch Tutorials, HW1
  13. 8421码到5421码的转换_余三码8421bcd码转换电路设计的接线方法
  14. uniapp 开发微信小程序图像识别
  15. ECCV 2022 | 视觉新任务!AVS:视听分割
  16. 洛谷-运输(P2094)
  17. Microsoft Edge浏览器崩溃,错误代码: STATUS_STACK_BUFFER_OVERRUN
  18. 计算机的软件教学设计七年级,计算机软件系统教学设计
  19. 【机器学习】聚类算法DBSCAN、K-means、Mean Shift对比分析及具体代码实现
  20. 如何给表格中的关键字加中括号,双引号?

热门文章

  1. 误删了php文件怎么恢复,linux中误删了文件怎么恢复
  2. php 抽奖活动_PHP实现大转盘抽奖算法
  3. 编译原理学习笔记(十二)
  4. 40G光模块介绍:QSFP+ VS CFP
  5. 手把手带你做一套毕业设计-征程开启
  6. 不撞南墙不回头----------深度优先搜索
  7. 常见的网站漏洞以及会对网站带来的危害
  8. 使用JavaScript和jQuery实现表格增删改(图书管理系统)
  9. 在线购物平台领域类图
  10. python写安卓游戏辅助软件_GitHub - Jinnrry/RobotHelper: 安卓游戏自动化脚本框架|Automated script for Android games...