# TS基础语法
# 基础类型
# 数据声明
1、布尔类型
let judge: boolean = false;
2、数字类型
let count: number = 123
3、字符串类型
let text: string = "何元鹏"
4、数组类型
在TypeScript中对数组的定义分为两种
let arrayData: number[] = [1,2,3]
// 或者
let arrayData: Array<number> = [1,2,3]
5、元组类型
元组类型是表示一个已知数量和类型的数组,各元素的数据类型可以不同。
let arrayData: [number,string];
arrayData = [1,"帅哥"]
在元组中数据的存储也必须符合元组中声明的数据类型
arrayData[3]="美女"
// "美女"属于字符串类型,所以可以进行赋值
arrayData[4] = true;
// true属于布尔类型在元组中并未声明所以不能属于,赋值失败
同样在使用函数方法的时候也是一样的效果,如果在未声明数组类型的时候是不能使用数组方法的。
console.log(arrayData[2].toString()) // ok
console.log(arrayData[1].substr(0)) // error
当访问一个越界的元素,我们会使用到联合类型
console.log(arrayData[5].toString()) // ok 因为在上面声明的araayData中本身就存在string类型
6、枚举类型
enum类型是JavaScript标准数据类型的一个补充,如同其他语言中的作用,使用枚举类型可以为一组数值赋予友好的名称
enum color {one,two,three}
let one: color = color.one
// one=0:因为在未赋值的情况下,默认是从0开始的。如果已经手动赋值,那么就等于当前对应的值。
当然在enum中也可以使用值去寻找当前的值对应的名称,如同知道value寻找key,如果有两个key对应的value值相同则覆盖取后者。
enum Color {Red , Green = 12, Blue = 12}
let colorName: string[] = [Color[12]];
console.log(colorName); // Blue
7、Any类型
Any类型使用于我们在编程阶段还不清楚变量的数据类型时使用。
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean
console.log(notSure) // false
在对现有代码进行改写的时候,any类型是十分有用的,它允许你在编译时可选择地包含或移除类型检查。 你可能认为 Object有相似的作用,就像它在其它语言中那样。 但是 Object类型的变量只是允许你给它赋任意值 - 但是却不能够在它上面调用任意的方法,即便它真的有这些方法:
let notSure: any = 4;
notSure.ifItExists(); // okay, ifItExists might exist at runtime
notSure.toFixed(); // okay, toFixed exists (but the compiler doesn't check)
Any也可以使用在数组上面
let list: any[] = [1, true, "free"];
list[1] = 100;
// [1,100,"false"]
8、Object类型 object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。
使用object类型,就可以更好的表示像Object.create这样的API
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