TypeScript 学习笔记
数据类型
JS 七种类型 + 枚举 + any + void + never
(JS 七种类型是 undefined,null,object,symbol,string,Boolean,number)
默认情况下 null 和 undefined 是所有类型的子类型。 就是说你可以把 null 和 undefined 赋值给 number 类型的变量。
或
|
使得一个参数可以允许选择多种类型。
function getLength(something: string | number): number {
return something.length;
}
类型断言
不要太相信断言。50% 的几率不可信。因为这可能是随便写的。
let strLength: number = (<string>someValue).length;
let strLength: number = (someValue as string).length;
当你在TypeScript里使用JSX时,只有 as语法断言是被允许的。
类型转化
Typescript不会自动帮你类型转换,需要你自己动手。
let a: number = 123;
let b: string = a.toString();
let c: string = '123';
let d: number = parseFloat(c);
let s1: number = 2;
let b1: boolean = Boolean(s1);
let obj = { name: 'frank', age: 18 };
let string = JSON.stringify(obj);
console.log(typeof string);
console.log(string);
let string2 = `{"name": "frank", "age": 18}`;
let obj2 = JSON.parse(string2);
console.log(typeof obj2);
console.log(obj2);
不要用 var
尽量不要用 var(var很垃圾的),使用 let 和 const。变量用 let,常量用 const。
注意 const 常量只是值不可变,如果 const 常量的值是一个地址,那么地址对应的对象的内容是可变的。
let 不能在1个作用域里多次声明,var 居然可以。
解构
数组、对象都能解构。
let obj = {
name: 'frank',
age: 18,
nation: 'China',
};
// let name = obj.name;
// let age = obj.age;
// let nation = obj.nation;
//解构
let { name, age, nation } = obj;
console.log(name, age, nation);
let arr = ['apple', 'orange', 'pear'];
// let fruit1 = arr[0];
// let fruit2 = arr[1];
// let fruit3 = arr[2];
let [fruit1, fruit2, fruit3] = arr;
console.log(fruit1, fruit2, fruit3);
function sayHi({ name, age }: { name: string, age: number }) {
console.log(`Hi, ${name}, ${age}`);
}
sayHi({ name: 'Ken', age: 18 });
类型里的类型
public textLists: Array<Array<string | number>> = [
["Clear", "÷"],
[7, 8, 9, "×"],
[4, 5, 6, "-"],
[1, 2, 3, "+"],
[0, ".", "="]
];
不能更改类型
TypeScript 不能改类型
let a = 1;
a = 'strig'; //这在typescript里是错的
null 和 undefined 有点特殊
null 和 undefined 是可以赋值给所有类型的变量。
let a:number = null;
let b:string = undefined;
const 需要注意的点
const 可以改对象里属性的值
const a = { name: "Jack" };
a.name = 'ken';
console.log(a);