TypeScript(TS)是微软研发的编程语言,是JavaScript的超集,也就是在JavaScript的基础上添加了一些特性.其中之一就是类型声明.

一、基础类型

TS的基础类型有 Boolean,Number,String,Array,Tuple,Enum,Any,Void,Null,Undefined,Never,Object.

布尔类型 Boolean

let isDone: boolean = false

*在变量名后用冒号:T(T 代表TS的类型)声明变量的类型。

数字类型 Number

//支持十进制和十六进制,ES6中引入的二进制和八进制
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;

字符串类型 String

let name: string = `Gene`;
let age: number = 37;
let sentence: string = `Hello, my name is ${ name }.I'll be ${ age + 1 } years old next month.`;

数组类型 Array

//有两种声明方式
//1 T[]
let list: number[] = [1, 2, 3];
let list: any[] = [1, true, "free"];
//2 Array<T>
let list: Array<number> = [1, 2, 3];

元组类型 Tuple

//可允许表示固定数量的数组,但是数组中可以具有不同的元素类型
let x: [string, number];
// Initialize it
x = ['hello', 10]; // OK
// Initialize it incorrectly
x = [10, 'hello']; // Error

枚举类型 Enum

像java等其它语言一样,枚举类型可以为一组数值赋予友好的语义化名字.

//默认从0开始编号,也可以只指定第一个元素的编号,之后的编号依次递增,也可以全部手动赋值编号;可以由枚举的值得到它的名字
enum Color {Red = 1, Green, Blue} let colorName: string = Color[2]; alert(colorName); // 显示'Green'因为上面代码里它的值是2

任意类型 Any

任意类型直接让类型检查器通过编译阶段的检查.

let notSure: any = 4;
notSure = "maybe a string instead";//ok
notSure = false; // ok

Void类型

与any类型相反,它表示没有任何类型

//我们可以为一个没有任何返回值的函数的返回值类型定义为void
function warnUser(): void {
alert("This is my warning message");
}
//当声明一个void类型变量时,只能赋值为undefined 和 null
let unusable: void = undefined;

Null 和 Undefined

//默认情况下null和undefined是所有类型的子类型.
let u: undefined = undefined;
let n: null = null;

Never类型

never类型表示的是那些永不存在的值的类型。

never类型也是任何类型的子类型,也可以赋值给任何类型;

// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
}

二、类型断言

类似其他语言的强制类型转换

类型断言有两种形式。

其一是“尖括号”语法:

let someValue: any = "this is a string";

let strLength: number = (<string>someValue).length;

另一个为as语法:

let someValue: any = "this is a string";

let strLength: number = (someValue as string).length;

三、类的实例的类型声明

let greeter: Greeter;
greeter = new Greeter("world");

四、函数类型的声明

函数类型包含两部分:参数类型和返回值类型,其中返回值类型ts可通过返回语句自动推断得出.

js中:

function add(x, y) {
return x + y
}

TS中:

function add(x: number, y: number): number {
return x + y;
}

其中函数声明时的参数有必传参数,可选参数,默认参数,剩余参数.

必传参数

params:参数

可选参数

params?:参数类型

调用时可以不填;

默认参数

params=默认值

调用时可以不填;

声明时一般放在最后一个位置,如果不是,那么调用的时候必须要传入undefined参数值

function buildName(firstName = "Will", lastName: string) {
return firstName + " " + lastName;
} let result1 = buildName("Bob"); // error
let result2 = buildName("Bob", "Adams", "Sr."); // error
let result3 = buildName("Bob", "Adams");// ok
let result4 = buildName(undefined, "Adams"); // ok

剩余参数

...restOfName: string[]

function buildName(firstName: string, ...restOfName: string[]) {
return firstName + " " + restOfName.join(" ");
} let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");

TypeScript基础类型,类实例和函数类型声明的更多相关文章

  1. int? 竟然真的可以是 null!.NET/C# 确定可空值类型 Nullable 实例的真实类型

    使用 Nullable<T> 我们可以为原本不可能为 null 的值类型像引用类型那样提供一个 null 值.不过注意:Nullable<T> 本身也是个 struct,是个值 ...

  2. 【C++编程基础】(1)—— 函数原型声明、函数模板、引用、const 常引用、const 常量指针

    一.函数原型声明: 1.函数声明告诉编译器函数的名称,和如何调用函数(返回类型和参数):函数定义提供了函数的实际主体. 2.强制性的:在C++中,如果函数调用的位置在函数定义之前,则要求在函数调用之前 ...

  3. Typescript基础(3)——类

    前言 今天继续typescript的学习,开始ts类的学习. 类 类的实现 在ES6中新增了类的概念.我们先看ES6中类的实现. class Person { constructor(name,age ...

  4. TypeScript魔法堂:函数类型声明其实很复杂

    前言 江湖有传"动态类型一时爽,代码重构火葬场",由于动态类型语言在开发时不受数据类型的约束,因此非常适合在项目原型阶段和初期进行快速迭代开发使用,这意味着项目未来将通过重写而非重 ...

  5. 反射, getClass(), 和something.class以及类型类(转)

    原文地址:http://www.cnblogs.com/lianghui66/archive/2012/12/03/2799134.html 所谓反射,可以理解为在运行时期获取对象类型信息的操作.传统 ...

  6. 8 函数类型——《Swift3.0从入门到出家

    Swift语言中每一个函数都有它特定的数据类型,称其为函数类型 函数类型和基本数据类型一样,可以定义变量或者常量,可以定义函数形参,也可以做为函数的返回值类型 函数类型的格式为:参数列表的数据类型—& ...

  7. TypeScript 高级类型 类(class)

    传统的JavaScript程序使用函数和基于原型的继承来创建可重用的组件,但对于熟悉使用面向对象方式的程序员来讲就有些棘手,因为他们用的是基于类的继承并且对象是由类构建出来的. 从ECMAScript ...

  8. typescript基础语法--变量/函数/指令/类

    博客地址 :https://www.cnblogs.com/sandraryan/ 要把ts文件引入到html中,首先要转码为js文件. 步骤: 终端运行: npm i -g typescript t ...

  9. Typescript基础类型

    1.布尔值__boolean 2.数字__number----除了支持十进制和十六进制字面量,Typescript还支持ECMAScript 2015中引入的二进制和八进制字面量. 3.字符串__st ...

随机推荐

  1. jieba库词频统计

    一.jieba 库简介 (1) jieba 库的分词原理是利用一个中文词库,将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组:除此之外,jieba 库还提供了增加自定义中文 ...

  2. LoadRunner录制脚本时没有响应——无法启动浏览器问题总结

    1.ie浏览器去掉启用第三方浏览器扩展 2.loadrunner11 键盘F4,在browser Emulation点击change,在弹出的提示框中Browser version 选择8.0,pla ...

  3. d3.js画折线图

    下载d3.zip,并解压到网页文件所在的文件夹 windows下,在命令行进入网页文件夹,输入 python -m http.server 在浏览器中输入127.0.0.1:8000/xxx.html ...

  4. PID25 / 合并果子 ☆

    这里用到了STL里面的priority_queue,我也不是很精通基本上属于现学现卖阶段,http://www.cnblogs.com/flyoung2008/articles/2136485.htm ...

  5. Eclipse 使用 ButterKnife 细节问题

    原本这都是很常见的功能 加入以下jar库就可以了. 哪里知道左右都不能获得点击时间; http://repo1.maven.org/maven2/com/jakewharton/butterknife ...

  6. Scrum冲刺阶段5

    成员今日完成的任务 人员 任务 何承华 学习后端设计 陈宇 后端设计 丁培辉 学习后端设计 温志铭 日程添加界面设计(后半段设计) 杨宇潇 日程添加界面设计(后半段设计) 张主强 服务器构建学习 成员 ...

  7. 7.地图随机装饰,与转化过程补充,与ai的设计思路

    这两天本来只想实现地图的随机装饰,然后发现以前的bin格式设计存在不足,所以最后不得不去改地图,并去重制整个地图的阶段,此篇总结这个过程 先描述下bin结构 首先地图由无数六边形组合,一个六边形由两层 ...

  8. (PMP)第2章-----项目运行环境

    1.事业环境因素:(客观存在,可能有帮助或阻碍,项目经理必须遵守) 内部:文化,结构,治理:设施和资源的地理分布,基础设施,信息技术软件,资源可用性,员工能力 外部:市场条件,社会和文化,法律限制,商 ...

  9. LCD调试1.0

    所谓调lcd timing就是去调lcd时序,一般是6个部分:HFPD(在一行扫描以前需要多少个像素时钟),HBPD(一行扫描结束到下一行扫描开始需要多少个像素时钟),VFPD(一帧开始之前需要多少个 ...

  10. tab选项卡--jq

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...