简单来说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简单的应用的更多相关文章

  1. TypeScript简单的代码片段

    TypeScript中,接口.接口实现.函数重载: interface IThing{ name:string; age:number; sayHello:{ (name:string):string ...

  2. TypeScript设计模式之策略、模板方法

    看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...

  3. TypeScript设计模式之门面、适配器

    看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...

  4. TypeScript设计模式之备忘录、命令

    看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...

  5. TypeScript设计模式之职责链、状态

    看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...

  6. TypeScript设计模式之中介者、观察者

    看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...

  7. TypeScript设计模式之组合、享元

    看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...

  8. Typescript学习

    一 什么是Typescript 简单的说,TypeScript 是 JavaScript 的一个超集,主要提供了类型系统和对 ES6 的支持,它由 Microsoft 开发,代码开源于 GitHub  ...

  9. TypeScript设计模式之装饰、代理

    看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...

随机推荐

  1. Oracle创建索引;查询索引

    1.创建索引 create index 索引名 on 表名(列名); 2.删除索引 drop index 索引名; 3.创建组合索引 create index 索引名 on 表名(列名1,,列名2); ...

  2. 学习笔记:自己编译安装OpenCV+测试opencv安装是否成功

    1. 安装编译依赖的软件包 # 安装读写不同图片类型的库: sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12- ...

  3. 异步函数Demo

    private static async Task<String> IssueClientRequestAsync(string serverName, string message) { ...

  4. Ubuntu系统---安装Caffe (+OpenCV+Python+CPU-only)

    安装配置Ubuntu14.04+Caffe (+OpenCV+Python+CPU-only) 记录 [作者:Wu Ping.时间:20180428.] 本人已经安装很多次的Caffe了:从开始的初探 ...

  5. R的数据结构--数组

    数组:可以认为数组是矩阵的扩展,它将矩阵扩展到2维以上.如果给定的数组是1维的则相当于向量,2维的相当于矩阵. R语言中的数组元素的类型也是单一的,可以是数值型,逻辑型,字符型或复数型 参数解释 ar ...

  6. 解决安卓app在真机上的无法登录问题

    和小伙伴用安卓做的app在模拟器上可以正常使用,但是变成apk发到手机上下载使用时,出现无法的登录问题,而且登录提示的错误出现一秒就消失了,无法看清. 于是找了一下老师帮忙,老师是通过在电脑主机上插入 ...

  7. P5657 格雷码

    思路 考场上的递归思路 每次向下递归的时候判断是左半边还是右半边即可 注意向右半边递归之后下一层序列要反转过来即可 代码 #include <cstdio> #include <al ...

  8. unity里framebuffer fetch相关问题

    https://docs.unity3d.com/Manual/SL-PlatformDifferences.html 开了framebuffer fetch 如果你再在里面sample 那张rt ( ...

  9. fiddler save files

    使用fiddler 保存访问到的文件 使用jscript Fiddler Script 是用JScript.NET语言写的 JScript.NET 此语言可以调用C# api 参考地址:http:// ...

  10. use redir to make port redirecting

    Step 1: install redir apt-get update apt-get install redir -y Step2 : add port mapping redir --lport ...