javascript中分为原始数据和对象类型两种。
原始数据类型包括:布尔值、数值、字符串、null
、undefined
以及 ES6 中的新类型 Symbol
。
typescript中和JavaScript的数据类型大致相同,只是做了一些扩展,下面是具体的用法
布尔值(boolean)
boolean是最基本的数据类型,在typescript中是boolean来定义
let flag: boolean = false; //冒号后跟的是数据类型
数值(number)
和js中一样,TypeScript里的所有数字都是浮点数。 这些浮点数的类型是 number。 除了支持十进制和十六进制字面量,TypeScript还支持ECMAScript 2015中引入的二进制和八进制字面量。下面是官方文档中给出的例子:
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;
字符串(string)
和js中一样,双引号和单引号都可以使用,同样支持es6中的字符串模版(``),${变量名}这种方式
let str: string = 'hello';
let str: string = `hello`;
let name: string = "typescript";
let sayHello: string = `你好吖,${name}`;
空值(void)
typescript允许设置空的类型,比如一个无返回值的函数,(感觉和java定义函数的方式一样)
function sayHello() :void {
console.log('hello typescrip')
}
声明一个空的变量没什么实际作用,所以可以使用undefined或者null
let unusable: void = undefined;
null和undefined
undefined 类型的变量只能被赋值为 undefined,null 类型的变量只能被赋值为 null。
let u: undefined = undefined;
let n: null = null;
undefined 类型的变量只能被赋值为 undefined,null 类型的变量只能被赋值为 null。
与 void 的区别是,undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 number 类型的变量:
//下边这两种都不会报错
let num: number = undefined;
let list: number[] = null;
// 这样也不会报错
let u: undefined;
let num: number = u;
但是void的变量不能赋值给number类型的变量
let u: void;
let num: number = u;
base.ts:16:5 - error TS2322: Type 'void' is not assignable to type 'number'. //不能将类型为void的变量赋值给number
16 let num: number = u;
任意值(any)
任意值(Any)用来表示允许赋值为任意类型。
如果是一个普通类型在赋值过程中是不允许改变类型的
let getting: string = 'welcome'
getting = 999; //在typescript中是不允许这样改变类型的
fn.ts:9:1 - error TS2322: Type '99' is not assignable to type 'string'.
9 getting = 99;
但是如果在定义变量时把类型改为any, typescript是允许更改类型的
let getting: any= 'welcome'
getting = 999; //ok
//甚至于你可以调用方法,都不会报错
getting.sayName('hello')
tip: 如果定义变量未声明类型,那么该变量将默认为any类型
let number;
//相当于 let number: any;
下一遍学习typescript的对象类型