在ts中,必须设置变量的数据格式。
类型推断
你在初始化变量时并没有明确地指定变量类型的话,则ts会自动根据变量的初值给这个变量设置一个类型。而在随后的使用中,这个变量也就有类型了。
如下,是一个错误的示范:
let a = "abc"
a = 1
a的类型被推断出是字符串型,则不可以当做数值使用。
基本数据类型
boolean,number,string,数组
let isDone : boolean = false;
let num:number = 10;
let str:string = "good";
let list:number[] = [1,2,3];
let arr:Array<number> = [1,2,3];
自定义的组合类型的数组
let objArr:[string,number,boolean] = ['a',10,false]
自使用 type 定义数据类型名
type Name = string;
type NameResolver = (b:number) => string;
type NameOrResolver = Name | NameResolver;
let a: Name = "abc"
a = 1 // 错误
// 两个错误:参数的类型不对,返回值类型也不对
let b: NameOrResolver = (b:string ) => {
return 1
}
枚举类型
enum TYPE { STUDENT, TEACHER };
let t: TYPE = TYPE.STUDENT
console.info(t) // 1
如上的ts代码编译成js后是:
var TYPE;
(function (TYPE) {
TYPE[TYPE["STUDENT"] = 0] = "STUDENT";
TYPE[TYPE["TEACHER"] = 1] = "TEACHER";
})(TYPE || (TYPE = {}));
;
var t = TYPE.STUDENT;
console.info(t); // 1
自定义数据类型
你可以用接口来自己定义某个特殊的数据结构:
interface STUDENT{
name: string,
age: number,
score:[number,number,number]
}
function f(stu:STUDENT) {
console.info(stu.age,stu.name,stu.score.join("-"))
}
let s:STUDENT = {name:100}; // error:100不是字符串
f({age:20,name:"jake",score:[100,'90',98]}) // error: '90' 不是数值
对应生成的js是:
function f(stu) {
console.info(stu.age, stu.name, stu.score.join("-"));
}
f({ age: 20, name: "jake", score: [100, 90, 98] });
网友评论