布尔值: boolean

let isDone: boolean = false;

数字: number

  • 和JavaScript一样,TS里的所有数字都是浮点数.
  • 支持十进制和十六进制字面量,TS还支持ECMAScript 2015中引入的二进制和八进制字面量。
let decLiteral: number = 6; // 十进制
let hexLiteral: number = 0xf00d; // 十六进制
let binaryLiteral: number = 0b1010; // 二进制
let octalLiteral: number = 0o744; // 八进制

字符串: string

使用单引号(')或双引号(")来表示字符串类型。反引号(`)来定义多行文本和内嵌表达式.
let firstName: string = "bob";
firstName = "smith";
let sentence: string = `Hello, my firstName is ${ firstName }.`;
let sentence1: string = "Hello, my firstName is " + firstName + "." ;

数组: array

// 在元素类型后面加上[]
let list: number[] = [1, 2, 3];
// 数组泛型,Array<元素类型>:
let list1: Array<number> = [1, 2, 3];

元组: Tuple

元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同, 对应位置的类型需要相同。
// Declare a tuple type
let x: [string, number];
// Initialize it
x = ['hello', 10]; // OK
// Initialize it incorrectly
x = [10, 'hello']; // Error //当访问一个已知索引的元素,会得到正确的类型:
console.log(x[0].substr(1)); // OK
console.log(x[1].substr(1)); // Error, 'number' does not have 'substr' // 当访问一个越界的元素,会使用联合类型替代:
x[3] = 'world'; // OK, 字符串可以赋值给(string | number)类型
console.log(x[5].toString()); // OK, 'string' 和 'number' 都有 toString
x[6] = true; // Error, 布尔不是(string | number)类型

枚举: enum

对JavaScript标准数据类型的一个补充,使用枚举类型可以为一组数值赋予友好的名字。
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
// 默认情况下,从0开始为元素编号。 你也可以手动的指定成员的数值。 例如,我们将上面的例子改成从 1开始编号:
enum Color {Red = 1, Green, Blue}
let c: Color = Color.Green;
//或者,全部都采用手动赋值:
enum Color {Red = 1, Green = 2, Blue = 4}
let c: Color = Color.Green;
//枚举类型提供的一个便利是你可以由枚举的值得到它的名字
enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2]; console.log(colorName); // 显示'Green'因为上面代码里它的值是2

Any:

any, 为不清楚类型的变量指定一个类型, 不通过类型检查器检测.
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean // any类型允许你在编译时可选择地包含或移除类型检查, 在它上面调用任意的方法.
let notSure: any = 4;
notSure.ifItExists(); // okay, ifItExists might exist at runtime
notSure.toFixed(); // okay, toFixed exists (but the compiler doesn't check)
// Object类型的变量只是允许你给它赋任意值 - 但是却不能够在它上面调用任意的方法,即便它真的有这些方法
let prettySure: Object = 4;
prettySure.toFixed(); // Error: Property 'toFixed' doesn't exist on type 'Object'. // 当你只知道一部分数据的类型时,any类型也是有用的。 比如,你有一个数组,它包含了不同的类型的数据:
let list: any[] = [1, true, "free"];
list[1] = 100;

Void

void类型像是与any类型相反,表示没有任何类型。当一个函数没有返回值时,其返回值类型通常是 void.
function warnUser(): void { // 表示没有返回值的函数
console.log("This is my warning message");
}
// 声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null
let unusable: void = undefined;

Null, Undefined

  • 默认情况下null和undefined是所有类型的子类型。 例如可以把 null和undefined赋值给number类型的变量。
  • 当你指定了--strictNullChecks标记(鼓励使用,可以避免很多问题),null和undefined只能赋值给void和它们各自.
  • 使用了--strictNullChecks标记后,如果想传入一个 string或null或undefined,可以使用联合类型string | null | undefined.
let n: null = null;
let u: undefined = undefined;

Never

never, 表示的是那些永不存在的值的类型。
  • 例如never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型;
  • 变量也可能是 never类型,当它们被永不为真的类型保护所约束时。
  • never类型是任何类型的子类型,也可以赋值给任何类型;
  • 然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never。
  • 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
} // 推断的返回值类型为never
function fail() {
return error("Something failed");
} // 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
while (true) {
}
}

Object

object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。
declare function create(o: object | null): void;

create({ prop: 0 }); // OK
create(null); // OK create(42); // Error
create("string"); // Error
create(false); // Error
create(undefined); // Error

类型断言

你清楚地知道一个实体具有比它现有类型更确切的类型。通过类型断言这种方式可以告诉编译器,“相信我,我知道自己在干什么”。
 // 尖括号方法:
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;
// 可凭个人喜好用以上方法,但当你在TypeScript里使用JSX时,只有as语法断言是被允许的。

TS学习笔记----(一)基础类型的更多相关文章

  1. TypeScript学习笔记之基础类型

    从今天开始学习typescript了,记录ts学习点滴,最后,使用ts结合nodejs开发后端应用,一起共勉吧: typescript最新版本2.6,所有演示代码均基于此版本 开始之前确定安装了如下n ...

  2. JDK7学习笔记之基础类型

    printf()的基础用法: 变量的基础用法: 字符的输出:

  3. C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)

    一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...

  4. C#学习笔记(基础知识回顾)之值类型和引用类型

    一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...

  5. MyBatis:学习笔记(1)——基础知识

    MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...

  6. C#学习笔记(基础知识回顾)之值传递和引用传递

    一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...

  7. WebGL three.js学习笔记 6种类型的纹理介绍及应用

    WebGL three.js学习笔记 6种类型的纹理介绍及应用 本文所使用到的demo演示: 高光贴图Demo演示 反光效果Demo演示(因为是加载的模型,所以速度会慢) (一)普通纹理 计算机图形学 ...

  8. mybatis学习笔记之基础复习(3)

    mybatis学习笔记之基础复习(3) mybatis是什么? mybatis是一个持久层框架,mybatis是一个不完全的ORM框架.sql语句需要程序员自己编写, 但是mybatis也是有映射(输 ...

  9. mybatis学习笔记之基础框架(2)

    mybatis学习笔记之基础框架(2) mybatis是一个持久层的框架,是apache下的顶级项目. mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成满足s ...

随机推荐

  1. linux 最大文件打开数

    配置文件 vim /etc/security/limits.conf   # /etc/security/limits.conf##This file sets the resource limits ...

  2. python之路day14--嵌套函数、匿名函数、高阶函数。函数的递归

      嵌套函数 函数里不仅可以写代码,还可以嵌套函数 name = "小猿圈" def change(): name = "小猿圈,自学编程" def chang ...

  3. MySql截取手机号

    IF(IFNULL(phone_number,'')='','',CONCAT(LEFT(phone_number,3),'****',RIGHT(phone_number,4)))  phone_n ...

  4. CodeForces-585B(BFS)

    链接: https://vjudge.net/problem/CodeForces-585B 题意: The mobile application store has a new game calle ...

  5. Python 3标准库课件第二章

    整理第一章我又觉得烦,我就看第二章了,灰头土脸的,第二章一.如列表(list).元组(tuple).字典(dict).集合(set)二.2.1 enum:枚举类型 enum模块定义了一个提供迭代和比较 ...

  6. 由于代码环境有dev test prod ,每次提交代码需要很多环境,shell脚本即可解决重复命令问题

    在项目外面写入push.sh 内容为 if [  $1!='' ] then    msg=$1; else    msg='bug'; fi   git add .  git commit -m $ ...

  7. Android 通过应用设置系统日期和时间的方法

    Android 通过应用设置系统日期和时间的方法 android 2.3 android 4.0 测试可行,不过需要ROOT权限. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  8. RedHat下yum配置为本地或者CentOs

    由于RedHat公司将yum源作为服务给用户提供,所以不能free给大家确实挺失望的,不过还好能够在RedHat上配置本地的Yum源,或者CentOS的Yum源. 这里提供两种方式,一种是配置本地的, ...

  9. Spring Boot教程(十七)属性配置文件详解(2)

    通过命令行设置属性值 相信使用过一段时间Spring Boot的用户,一定知道这条命令:java -jar xxx.jar --server.port=8888,通过使用–server.port属性来 ...

  10. Redis大key的发现与删除方法全解析

    个推作为国内第三方推送市场的早期进入者,专注于为开发者提供高效稳定的推送服务,经过9年的积累和发展,服务了包括新浪.滴滴在内的数十万APP.由于我们推送业务对并发量.速度要求很高,为此,我们选择了高性 ...