TypeScript-基础
基本数据类型
JavaScript 中的数据类型分为两类:基本数据类型 和 引用数据类型;
基本数据类型:布尔值、数值、字符串、null、undefined 以及 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 类型声明的变量,只能将它赋值为 undefined 和 null ;
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;
待续。。。