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的用法. 首 ...
最新文章
- C/C++ VS中调用matlab函数的方法
- 自定义C++异常处理
- 小试牛刀:文本处理工具之grep、egrep详解
- [leetcode]Largest Rectangle in Histogram @ Python
- (转载)图像处理(卷积)
- Java架构师发展路线
- Fall 2020 Berkeley cs61a hw04答案
- IT 软件测试 ——轻松月入过20K 测试工程师年薪35W
- 前端页面局部(全局)刷新方法
- 智能云门禁解决方案来了
- 如何增加架设传奇服务器,做为一个新手如何架设传奇
- 李宏毅2021春季机器学习课程视频笔记1:Introduction, Colab PyTorch Tutorials, HW1
- 8421码到5421码的转换_余三码8421bcd码转换电路设计的接线方法
- uniapp 开发微信小程序图像识别
- ECCV 2022 | 视觉新任务!AVS:视听分割
- 洛谷-运输(P2094)
- Microsoft Edge浏览器崩溃,错误代码: STATUS_STACK_BUFFER_OVERRUN
- 计算机的软件教学设计七年级,计算机软件系统教学设计
- 【机器学习】聚类算法DBSCAN、K-means、Mean Shift对比分析及具体代码实现
- 如何给表格中的关键字加中括号,双引号?
热门文章
- 误删了php文件怎么恢复,linux中误删了文件怎么恢复
- php 抽奖活动_PHP实现大转盘抽奖算法
- 编译原理学习笔记(十二)
- 40G光模块介绍:QSFP+ VS CFP
- 手把手带你做一套毕业设计-征程开启
- 不撞南墙不回头----------深度优先搜索
- 常见的网站漏洞以及会对网站带来的危害
- 使用JavaScript和jQuery实现表格增删改(图书管理系统)
- 在线购物平台领域类图
- python写安卓游戏辅助软件_GitHub - Jinnrry/RobotHelper: 安卓游戏自动化脚本框架|Automated script for Android games...