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. Linux下配置JAVA 环境变量及查看JDK安装路径
  2. ubuntu11.10设置了pppoe(自动拨号后),开机速度慢和无法连接无线网都解决办法...
  3. CodeForces - 1484F Useful Edges(最短路)
  4. 【lucene】lucene查询操作
  5. CAN FD实战之CAN FD应用领域及CAN迁移至CAN FD的策略
  6. 新机常用软件及环境配置清单
  7. git 强制回滚到某个commit版本
  8. 阿里云上创建 对象存储oss
  9. PowerApps教程10-图表的设计与嵌入
  10. 内网穿透远程查看内网监控摄像头
  11. 容器云平台No.10~通过gogs+drone+kubernetes实现CI/CD
  12. 毫米和像素怎么换算_C#中毫米与像素的换算方法
  13. 深度学习 机器学习基础_实用的机器学习基础
  14. TU-Net/TDeepLab:基于RGB和红外的地形分类
  15. Python爬虫实战项目:简单的百度新闻爬虫
  16. java开发工具还有那些?
  17. IP通信中音频编解码技术与抗丢包技术概要
  18. 最简单的推送提醒服务-Bark
  19. char与signed char, unsigned char的区别?
  20. 服务器回收信息,旧服务器回收

热门文章

  1. 谷歌的代码覆盖率最佳实践
  2. iG/NZT安装使用过程中可能遇到的问题解决办法(根据用户反馈持续更新中...)
  3. 智能垃圾桶(六)——gps+bds北斗双模模块
  4. day01 开启IT技术学习之旅
  5. 大众点评文字加密反爬Python
  6. 【小白理财】个人总结:大神与小白区别
  7. Dockerfile、Docker-Compose
  8. [crash分析][mips]一个openwrt的patch引发的血案
  9. 4链提币接口通道源码
  10. Python scrapy 中的css选择器提取 a 标签的 href值