中文文档网址 https://www.tslang.cn/docs/home.html
与js不同的是 ts的变量都可以类型注解 : 后面注明变量类型
let isDone: boolean = false;
与js的类型相比多出的 比如枚举(个人理解 将对象数据化了 类似数组通过下角标得到值)
enum Color {Red, Green, Blue}
let c: Color = Color[0];
console.log(c)//Red
//也可以手动添加下角标
enum Color {Red = 1, Green, Blue}
let c: Color = Colorp[1];
//如果不手动添加的话 默认是从0开始的
any 可以是任何类型
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean
Void
某种程度上来说,void
类型像是与any
类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void
:
声明一个void
类型的变量没有什么大用,因为你只能为它赋予undefined
和null
:
Never
never
类型表示的是那些永不存在的值的类型。 例如, never
类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never
类型,当它们被永不为真的类型保护所约束时。
Object
object
表示非原始类型,也就是除number
,string
,boolean
,symbol
,null
或undefined
之外的类型。
使用object
类型,就可以更好的表示像Object.create
这样的API。例如:
declare function create(o: object | null): void;
// declare 声明变量 interface 声明接口类似
//object 感觉和对象变量没有什么区别
create({ prop: 0 }); // OK
create(null); // OK
create(42); // Error
create("string"); // Error
create(false); // Error
create(undefined); // Error
类型断言
明确告诉编译器这是一个什么类型的变量
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
//<类型> 值
// 值 as 类型
变量声明
主要说了一些ES6的一些用法 除此之外
获取块级作用域变量的一种方法
function theCityThatAlwaysSleeps() {
let getCity;
if (true) {
let city = "Seattle";
getCity = function() {
return city;
}
}
return getCity();
}
解构的重命名
let o = {
a: "foo",
b: 12,
c: "bar"
};
let { a, b } = o;
let { a: newName1, b: newName2 } = o;
//其实与下面是一样的 平时解构 变量a对应属性a 现在重命名了 将属性a复制给了变量newName1
let newName1 = o.a;
let newName2 = o.b;
类型别名
type (可以给一个类型定义一个名字)多用于符合类型
type aa=number
type name=string|number
let a:name=123
let b:aa=456
console.log(a) //123
console.log(b) //456
字符串字面量类型
字符串字面量类型用来约束取值只能是某几个字符串中的一个。
type name1="小红"|"小明"|"小李"
function conName(name:name1):void{
console.log(name)
}
conName("小红") //小红 如果是这三个字符串以外的 则报错