typescript简单的应用
简单来说typescript就是新增一下方法,以及增加类型判断
一、普通的类型判断
1、布尔类型(boolean)
let isDone: boolean = false
let createdByBoolean: boolean = Boolean(1)
2、数字类型(number)
let decLiteral: number = 6
let hexLiteral: number = 0xf00d
// ES6 中的二进制表示法
let binaryLiteral: number = 0b1010
// ES6 中的八进制表示法
let octalLiteral: number = 0o744
let notANumber: number = NaN
let infinityNumber: number = Infinity
3、字符串类型(string)
let myName: string = 'Tom'
// 模板字符串
let sentence: string = `Hello typescript`
4、空值类型(void、null、undefined)
// 返回空值的函数
function alertName(): void {
alert('My name is Tom')
}
// 默认空值
let unusable: void = undefined
// Null 和 Undefined
let u: undefined = undefined
let n: null = null
5、任意值(any)
let myFavoriteNumberAny: any = 'seven'
myFavoriteNumberAny = 7
6、联合类型
let myFavoriteNumber: string | number
myFavoriteNumber = 'seven'
myFavoriteNumber = 7
7、类型断言(根据类型来做判断)
function getLength(something: string | number): number {
// 当只有something为字符串时才会找到
if ((<string>something).length) {
return (<string>something).length;
} else {
return something.toString().length;
}
}
二、数组类型
let fibonacciNum: number[] = [1, 1, 2, 3, 5]
let fibonacciStr: string[] = ['1','2','3','4','5']
let fibonacciBool: boolean[] = [true,false]
let fibonacciVoid: void[] = [undefined,null]
// any在数组里的应用
let list: any[] = ['xcatliu', 25, { website: 'http://xcatliu.com' }]
三、对象(接口)类型
1、指定对象的类型(interface)
interface Object {
name: string
age: number
}
const object: Object = {
name: '我',
age: 18
}
2、可选属性(指定类型少了一些属性或者多一些属性都是不允许的,除了可选属性)
interface Object1 {
name?: string
age: number
}
const object1: Object1 = {
age: 18
}
3、任意属性(任意名称的属性)
interface Person {
name: string;
age?: number;
[propName: string]: any;
}
// 一旦定义了任意属性,确定属性和可选属性的类型都必须是它的类型的子集(也就是可选属性和任意属性同时存在时,可选属性的类型必须和任意属性相同)
interface Person1 {
name: string;
age?: string;
[propName: string]: string;
}
let tom: Person1 = {
name: 'Tom',
age: '25',
gender: 'male'
}
4、只读属性(除了第一次赋值,其余时候都无法修改的属性)
interface Person2 {
readonly id: number;
name: string;
age?: number;
[propName: string]: any;
}
// id除了第一次赋值外,其余时候都没办法修改
let tom2: Person2 = {
id: 89757,
name: 'Tom',
gender: 'male'
}
四、函数类型
1、简单的函数表达式
// 参数类型与返回类型
function sum(num1: number, num2: number): number {
return num1 + num2
}
2、完整的参数式函数表达式
// 通过赋值来定义函数
let mySum1 = function (x: number, y: number): number {
return x + y
}
// 其实这样的话是通过类型推断来决定mySum是函数而已,是不标准的,标准如下:
let mySum2: (x: number, y: number) => number = function (x: number, y: number): number {
return x + y
}
// 首先要输入mySum2的类型,类型是函数类型,而函数类型包括输入的内容(x: number, y: number),与输出的结果number,中间用=>表示是定义函数定义特有的符号
// 接口的方式定义函数,更为清晰
interface SearchFunc {
(source: string, subString: string): boolean
}
let mySearch: SearchFunc
mySearch = function (source: string, subString: string) {
return source.search(subString) !== -1
}
3、配合可选参数
// 需要注意可选参数不能放在必须参数的前面
function buildName(firstName: string, lastName?: string) {
if (lastName) {
return firstName + ' ' + lastName
} else {
return firstName
}
}
let tomcat = buildName('Tom', 'Cat')
let tom1 = buildName('Tom')
4、默认参数
function buildName1(firstName: string, lastName: string = 'Cat') {
return firstName + ' ' + lastName
}
let tomcat1 = buildName('Tom', 'Cat')
let tom3 = buildName('Tom')
5、多余参数
// 剩余参数(和es6的方式类型,表示剩余的所有参数)
function push(array: any[], ...items: any[]) {
items.forEach(function (item) {
array.push(item)
});
}
typescript简单的应用的更多相关文章
- TypeScript简单的代码片段
TypeScript中,接口.接口实现.函数重载: interface IThing{ name:string; age:number; sayHello:{ (name:string):string ...
- TypeScript设计模式之策略、模板方法
看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...
- TypeScript设计模式之门面、适配器
看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...
- TypeScript设计模式之备忘录、命令
看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...
- TypeScript设计模式之职责链、状态
看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...
- TypeScript设计模式之中介者、观察者
看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...
- TypeScript设计模式之组合、享元
看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...
- Typescript学习
一 什么是Typescript 简单的说,TypeScript 是 JavaScript 的一个超集,主要提供了类型系统和对 ES6 的支持,它由 Microsoft 开发,代码开源于 GitHub ...
- TypeScript设计模式之装饰、代理
看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...
随机推荐
- **表示python中的意思
**表示python中的意思 **表示python中的电源操作传递参数和定义参数时(所谓的参数是调用函数时传入的参数,参数是定义函数时定义函数的参数),还可以使用两个特殊语法:“`*`**”. 调用函 ...
- Flask debug 模式 PIN 码生成机制安全性研究笔记
Flask debug 模式 PIN 码生成机制安全性研究笔记 0x00 前言 前几天我整理了一个笔记:Flask开启debug模式等于给黑客留了后门,就Flask在生产网络中开启debug模式可能产 ...
- QT学习之路DAY1之初学QT的小项目
以下所有代码均利用软件QT5编写 项目一:Hello world! 利用QTcreator创建项目 修改main.cpp代码为 #include "mainwindow.h" #i ...
- 01_日志采集框架Flume简介及其运行机制
离线辅助系统概览: 1.概述: 在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集.结果数据导出. 任务调度等不可或缺的辅助系统,而这些辅助 ...
- Django_03_后台管理
后台管理 站点分为内容发布和公共访问两部分 内容发布的部分由网站的管理员负责查看.添加.修改.删除数据,开发这些重复的功能是一件单调乏味.缺乏创造力的工作,为此,Django能够根据定义的模型类自动地 ...
- java.io.IOException: Broken pipe
最近项目虽然已经在正常运行,但是偶尔会有一些不知名的错误冒出来,比如时不时报一个数据库主键重复或者某些时候会有null的异常报出来.看看代码写完能跑起来还只是开始而已,需要不断精进重构,才能让代码运行 ...
- PAT Basic 1085 PAT单位排行 (25 分)
每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整数 N(≤),即考生人数.随后 N 行,每行按下列格式给出一个考生的信息: 准 ...
- vue store获取值时 Computed property "activeTag" was assigned to but it has no setter.
出现原因: element-ui中 el-tab绑定的值在切换tab时会自动修改 而activeTag是从store中获取的值,不能直接修改 要添加给它绑定上set <el-tabs cla ...
- 内核对象&句柄&泄漏&检测
今天看到这个问题如何评价王垠的 <讨厌的 C# IDisposable 接口>? - 王垠(人物),答案被歪到windows 内核对象和句柄,答案中谈的太浅显而且有误.翻出陈年老文章(此文 ...
- python中else与finally的总结
1.else的用法 对try...except的补充: else子句的使用比在子句中添加其他代码更好,try因为它避免了意外捕获由try... except语句保护的代码未引发的异常. for arg ...