TypeScript-基础

  • 基本数据类型


JavaScript 中的数据类型分为两类:基本数据类型 和 引用数据类型;

基本数据类型:布尔值、数值、字符串、nullundefined 以及 ES6中的新类型 Symbol

TS 中主要看前五种基本数据类型。

  • 布尔值

使用 boolean 定义布尔值类型:

let isBoolean: boolean = false;

注意:构造函数 Boolean 新增的对象不是 布尔值;

let createdBoolean: boolean = new Boolean(1);
// 不能将类型“Boolean”分配给类型“boolean”。
//  “boolean”是基元,但“Boolean”是包装器对象。如可能首选使用“boolean”
  • 数值

使用 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;

编译后的结果为:

var decLiteral = 6;
var hexLiteral = 0xf00d;
// ES6 中的二进制表示法
var binaryLiteral = 10;
// ES6 中的八进制表示法
var octalLiteral = 484;
var notANumber = NaN;
var infinityNumber = Infinity;
  • 字符串

使用 string 定义字符串类型:

// 字符串
let myName: string = ‘Tom‘;
let myAge: number = 25;

// 模板字符串
let sentence: string = `Hello, my name is ${myName}.
I‘ll be ${myAge + 1} years old next month.`;

编译后的结果为:

// 字符串
let myName: string = ‘Tom‘;
let myAge: number = 25;

// 模板字符串
let sentence: string = `Hello, my name is ${myName}.
I‘ll be ${myAge + 1} years old next month.`;
  • 空值

JavaScript 中没有空值的概念,但是在 TS 中,用 void 表示没有任何返回值的函数

function voidDemo (): void {
    console.info(‘This is void‘);
}
voidDemo(); // This is void

注意: void 类型声明的变量,只能将它赋值为 undefinednull

  • Null 和 Undefined

在 TS 中用 null undefined 来定义这两个原始数据类型:

let u: undefined = undefined;
let n: null = null;

注意:void null undefined 的区别是:null 、undefined 是所以类型的子类型;其实就是说 undefined 类型的变量,可以赋值给 number string ... 类型的变量;

  • 任意值

任意值(Any)用来表示允许赋值为任意类型。


  • 何为任意值类型:

若是一个普通类型,在赋值过程中改变类型 TS 是不允许的:

let myFavoriteNumber: string = ‘six‘;
myFavoriteNumber = 6;
// 不能将类型“6”分配给类型“string”

但是若是 any 类型,就可以:

let myFavoriteNumber: any = ‘six‘;
myFavoriteNumber = 6;
// 不报错
  • 任意值的属性和方法

在任意值上访问任何属性都是允许的:

let anyThing: any = ‘hello‘;
console.log(anyThing.myName);
console.log(anyThing.myName.firstName);

在任意值上调用任何方法:

let anyThing: any = ‘Tom‘;
anyThing.setName(‘Jerry‘);
anyThing.setName(‘Jerry‘).sayHello();
anyThing.myName.setFirstName(‘Cat‘);

理解为:声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值.

  • 未声明类型的变量

变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型:

let something;
something = ‘seven‘;
something = 7;

something.setName(‘Tom‘);

等价于

let something: any;
something = ‘seven‘;
something = 7;

something.setName(‘Tom‘);
  • 类型推论

若是没有明确指定其类型,则 TS 会进行类型推论 (Type Inference)得出一个类型来;

let myFavoriteNumber = ‘seven‘;
myFavoriteNumber = 7;
// 不能将类型“7”分配给类型“string”。

在声明一个变量时未指定其类型,TS 会进行类型推论出一个类型,若声明时已经赋值,则会得出一个类型,后边赋值不符合类型,则会报错(如上);

注意:若定义的时候没有赋值,不管后来有没有赋值,都会推论成 any 类型而完全不被类型检查;

let myFavoriteNumber;
myFavoriteNumber = ‘seven‘;
myFavoriteNumber = 7;

本文引用与 xcatliu;

待续。。。

相关推荐