TypeScript 简介

TypeScript 由 Microsoft开发和维护的一种开源编程语言。它支持 JavaScript 的所有语法和语义,同时通过作为 ECMAScript 的超集来提供一些额外的功能,如类型检测和更丰富的语法。下图显示了 TypeScript 与 ES5,ES2015,ES2016 之间的关系。

数据类型

 

// String 类型
// 一个保存字符串的文本,类型声明为 string。可以发现类型声明可大写也可小写,后文同理。
let str: string = 'abcd';
let str2: String = 'abcd'; // Boolen 类型
// boolean是 true 或 false 的值
// 所以 let isBool3: boolean = new Boolean(1) 就会编译报错,因为 new Boolean(1) 生成的是一个 Bool 对象。
let isBool: boolean = false; // Number 类型
let number: number = ; // Array 类型
// 数组是 Array 类型。然而,因为数组是一个集合,我们还需要指定在数组中的元素的类型。
// 我们通过 Array<type> or type[] 语法为数组内的元素指定类型
let arr: number[] = [, , , , ];
let arr2: Array<number> = [, , , , ]; let arr3: string[] = ['', '', ''];
let arr4: Array<string> = ['', '', '']; // Tuple 类型
// 元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。
// 比如,你可以定义一对值分别为string和number类型的元组。
let x: [string, number];
x = ['hello', ]; // OK
// x = [10, 'hello']; // Error // Enums 类型
// 枚举类型用于定义数值集合。
// 列出所有可用值,一个枚举的默认初始值是0。你可以调整一开始的范围。
enum People {Student = , Teacher, Doctor};
let role1: People = People.Student;
let role2: People = People.Teacher;
let role3: People = People.Doctor;
console.log(role1, role2, role3) // 3 4 5
// 可以自己转换成js代码 之后打印一下People // Any 类型
// any 是默认的类型,其类型的变量允许任何类型的值。
let any: any = ;
let any2: any[] = [, '', false]; // Void 类型
// JavaScript 没有空值 Void 的概念,在 TypeScirpt 中,可以用 void 表示没有任何返回值的函数。
function alertName(): void {
console.log('My name is changdong');
} // Null 和 Undefined
// TypeScript里,undefined和null两者各自有自己的类型分别叫做undefined和null。
// 和void相似,它们的本身的类型用处不是很大。
let u: undefined = undefined;
let n: null = null;
// 默认情况下null和undefined是所有类型的子类型。 就是说你可以把null和undefined赋值给number类型的变量。
// 然而,当你指定了--strictNullChecks标记,null和undefined只能赋值给void和它们各自。 这能避免很多常见的问题。 // 启用 --strictNullChecks
let num: number;
num = ; // 运行正确
num = undefined; // 运行错误
num = null; // 运行错误 // 也许在某处你想传入一个string或null或undefined,你可以使用联合类型string | null | undefined。 // 启用 --strictNullChecks
let num2: number | null | undefined;
num2 = ; // 运行正确
num2 = undefined; // 运行正确
num2 = null; // 运行正确 // Never 类型
// never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。
// 这意味着声明为 never 类型的变量只能被 never 类型所赋值,在函数中它通常表现为抛出异常或无法执行到终止点(例如无限循环)。
let a: never;
let b: number;
// a = 123; // 运行错误,数字类型不能转为 never 类型
a = (() => { throw new Error('never')})(); // 运行正确,never 类型可以赋值给 never类型
b = (()=>{ throw new Error('exception')})(); // 运行正确,never 类型可以赋值给 数字类型
// 返回值为 never 的函数可以是抛出异常的情况
function error(message: string): never {
throw new Error(message);
}
// 返回值为 never 的函数可以是无法被执行到的终止点的情况
function loop(): never {
while (true) {}
} // Object 类型
// object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。
// 使用object类型,就可以更好的表示像Object.create这样的API
declare function create(o: object | null): void;
create({ prop: }); // OK
create(null); // OK // create(42); // Error
// create("string"); // Error
// create(false); // Error
// create(undefined); // Error

TypeScript----数据类型的更多相关文章

  1. 手摸手教你用 yapi-to-typescript生成Yapi的TypeScript数据类型

    一 背景 现代社会比较重视效率,本着这个思想宗旨,能用工具自动高效做的事情,就不要低质量的勤奋.yapi-to-typescript就是一款自动生成接口请求与响应的typescript数据类型定义的工 ...

  2. 7、TypeScript数据类型

    1.变量声明 var 不要使用 建议使用: let 变量 const 常量,一旦申明不能修改 2.数据类型 2.1布尔值:boolean 2.2数字类型  :number 2.3字符串类型:strin ...

  3. typescript数据类型

    // 布尔类型 let isDone: boolean = false; // 数字类型 所有数字都是浮点数 number let decLiteral: number = 6; let hexLit ...

  4. TypeScript 数据类型---枚举 (Enum)

    一.基础用法 1.默认值 从0开始递增+1 enum Color {Red, Green, Blue} let c: Color = Color.Red; let d: Color = Color.G ...

  5. TypeScript学习笔记—数据类型

    TypeScript 数据类型 Boolean 类型 let isDone: boolean = false; // tsc => var isDone = false; Number 类型 l ...

  6. 遨游TypeScript海洋之定义变量和数据类型

    变量和数据类型 熟悉JavaScript的小伙伴都知道,typescript是JavaScript的超集,也就是说它包含JavaScript.所以我觉得,只要你想拥有更佳的模块管理,让你的开发更佳严谨 ...

  7. 感受typescript定义变量和数据类型的神奇魔力

    变量和数据类型 你的Javascript能力到达瓶颈?那是因为你还不会typescript.掌握TS,让你的开发更加准确简洁. 今天的学习中,我们接着从TS的数据类型和变量入手,感受它们的奇妙魔力. ...

  8. 关于typescript之定义变量和数据类型那点事

    变量和数据类型 JavaScript虽说深受万千程序员喜爱,却有着对于企业大规模开发很难管理的缺陷.这时候,TypeScript的优势便体现出来.接下来,我们会先接触在TypeScript中定义变量相 ...

  9. TypeScript入门二:基本数据类型

    浅析基本数据类型 TypeScript类型解析 一.浅析基本数据类型 首先有一个问题TypeScript是一门编译型语言?还是解释性语言?显然已经不能被这两个分类来区分,TypeScript的并不是为 ...

  10. Typescript---01 数据类型

    Typescript数据类型 1. 布尔值boolean let isDone: boolean = false; 注意: 使用构造函数Boolean创造的对象不是布尔值,它是一个对象.所以下边的示例 ...

随机推荐

  1. 树莓派3B+和3B 安装64位debian GUN/Linux系统

    请直接参考如下博客: https://blog.csdn.net/u013451404/article/details/80710136 如果是3B的树莓派用户,只需要把第一个分区boot里的.dtb ...

  2. winform messageBox.Show()

    MessageBox.Show(" 5 个参数...... ",     " 亮仔提示",     MessageBoxButtons.OKCancel,    ...

  3. QT编译Mysql驱动问题及解决方案

    默认情况下,qt 并没有自带mysql的数据库插件,需要自己编译先安装mysql server ,运行setup.exe时选择自定义安装,安装目录设为"D:\mysqldev"不要 ...

  4. STM32F10xxx_异常与中断

    STM32F10xxx_异常与中断 [TOC] 更新记录 version status description date author V1.0 C Create Document 2018.10.2 ...

  5. 移动端tab切换时下划线的滑动效果

    1.当前 tab 出现下划线的同时,前一个下划线同时消失(出现方向与消失方向保持一致),伴随过渡效果. <!DOCTYPE html><html lang="en" ...

  6. HTML的学习2(注释)

    <!--链接标签--> <!--核心属性就是href 属性值可以是一个跳转的地址--> <a href="">可点击的文本</a> ...

  7. 【C/C++】内存对齐规则和实战

    内存对齐规则和实战 这篇文章是我的平时的一个笔记修改后来的.这里主要介绍一下内存对齐的规则,以及提供一些实战一下.几篇我觉得比较好的详细的介绍内存对齐的作用什么的博文会在文末附上. 规则 在开始实战前 ...

  8. 6.Shell 计划任务服务程序

    计划任务服务程序 经验丰富的系统运维工程师可以使得Linux在无需人为介入的情况下,在指定的时间段自动启用或停止某些服务或命令,从而实现运维的自动化. 如何设置服务器的计划任务服务,把周期性.规律性的 ...

  9. Beta冲刺——星期三

    这个作业属于哪个课程 <课程的链接> 这个作业要求在哪里 <作业要求的链接> 团队名称 飞猪们 这个作业的目标 剩余任务预估,分配任务(开发,测试等).按要求提交当天冲刺报告. ...

  10. LeetCode 69 x 的平方根

    链接:https://leetcode-cn.com/problems/sqrtx 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数, ...