TypeScript杂谈(一)——type关键字
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的区别
- 和接口一样,用来描述对象或函数的类型
type User = {name: stringage: number
};
type SetUser = (name: string, age: number)=>void;
在ts编译成js后,所有的接口和type 都会被擦除掉。
- 扩展和实现(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}
- 接口的声明合并
接口可以定义多次,并将被视为单个接口(即所有声明属性的合并)。而 type 不可以定义多次。
interface User {name: stringage: number
}interface User {sex: string
}
let user:User={name:'wang',age:1,sex:'man'}
- 映射类型
type 能使用 in 关键字生成映射类型,但 interface 不行。
type Keys = "name" | "sex"type DulKey = {[key in Keys]: string // 类似for...in
}let stu: DulKey = {name: "wang",sex: "man"
}
TypeScript杂谈(一)——type关键字相关推荐
- 【进阶】TypeScript 中的 Type
一 .什么是 TypeScript TypeScript 是静态编程语言 , 是 JavaScript 的超集 简而言之:JavaScript 有的 TypeScript 都有.JavaScript ...
- Go 学习笔记(27)— type 关键字(类型定义、类型别名、类型查询、定义接口、定义结构体)
1. 类型别名定义 定义类型别名的写法为: type TypeAlias = Type 类型别名规定: TypeAlias 只是 Type 的别名,本质上 TypeAlias 与 Type 是同一个类 ...
- 3.type关键字.rs
/* 你可以使用 type 关键字声明另一类型的别名(用法和C++一样一样的) 类型别名:type aliases type Name = String;type 也可以用来声明trait的关联类型, ...
- Scala-Unit6-final/type关键字、样例类样例对象
一.关键字 1.final关键字 用final修饰的类:不能被继承 用final修饰的方法:不能被重写 注意:(1)在Scala中变量不需要用final修饰,因为val与var已经限制了变量是否可变 ...
- scala type关键字用于起别名
type关键字相当于给类型起了个别名 object SeqDemo extends App {//给类型String起个别名s,type s = String//定义一个s类型的变量,就相当于定义一个 ...
- go语言中的type关键字
type关键字 type是go语法里的重要而且常用的关键字,type绝不只是对应于C/C++中的typedef.搞清楚type的使用,就容易理解go语言中的核心概念struct.interface.函 ...
- typeScript interface和type区别
typeScript interface和type区别 interface 参考资料 ----> https://www.tslang.cn/docs/handbook/interfaces.h ...
- typescript error TS2322: Type ‘Timeout‘ is not assignable to type ‘number‘.
源码 const timer:number = setTimeout(()=>{},1) 报错 typescript error TS2322: Type 'Timeout' is not as ...
- typescript Awaited<Type>教程用法
typescript Awaited教程用法 文章目录 typescript Awaited<Type>教程用法 ts4.5发布了Awaited,但是很多人不明白Awaited的用法. 首 ...
最新文章
- Linux下配置JAVA 环境变量及查看JDK安装路径
- ubuntu11.10设置了pppoe(自动拨号后),开机速度慢和无法连接无线网都解决办法...
- CodeForces - 1484F Useful Edges(最短路)
- 【lucene】lucene查询操作
- CAN FD实战之CAN FD应用领域及CAN迁移至CAN FD的策略
- 新机常用软件及环境配置清单
- git 强制回滚到某个commit版本
- 阿里云上创建 对象存储oss
- PowerApps教程10-图表的设计与嵌入
- 内网穿透远程查看内网监控摄像头
- 容器云平台No.10~通过gogs+drone+kubernetes实现CI/CD
- 毫米和像素怎么换算_C#中毫米与像素的换算方法
- 深度学习 机器学习基础_实用的机器学习基础
- TU-Net/TDeepLab:基于RGB和红外的地形分类
- Python爬虫实战项目:简单的百度新闻爬虫
- java开发工具还有那些?
- IP通信中音频编解码技术与抗丢包技术概要
- 最简单的推送提醒服务-Bark
- char与signed char, unsigned char的区别?
- 服务器回收信息,旧服务器回收
热门文章
- 谷歌的代码覆盖率最佳实践
- iG/NZT安装使用过程中可能遇到的问题解决办法(根据用户反馈持续更新中...)
- 智能垃圾桶(六)——gps+bds北斗双模模块
- day01 开启IT技术学习之旅
- 大众点评文字加密反爬Python
- 【小白理财】个人总结:大神与小白区别
- Dockerfile、Docker-Compose
- [crash分析][mips]一个openwrt的patch引发的血案
- 4链提币接口通道源码
- Python scrapy 中的css选择器提取 a 标签的 href值