数据类型
JS 七种类型 + 枚举 + any + void + never
let n:any = 1;
n = 'string';
声明了类型,若想转其他类型,可直接any;
enum Gender {
Man = 'man',
Woman = 'woman',
}
let gender: Gender = Gender.Man
console.log(gender);
gender = Gender.Woman;
console.log(gender);
枚举就是对有限的状态进行枚举,使用时直接拿,避免出错
若enum中没有给值,那么则为数组;
默认情况下null和undefined是所有类型的子类型。 就是说你可以把 null和undefined赋值给number类型的变量。
类型断言
(<string>someValue).length;
(someValue as string).length;
类型转化
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);
//数字变为boolean
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);
//字符串变对象
当你在TypeScript里使用JSX时,只有 as语法断言是被允许的。
变量声明
尽量不要用 var(var很垃圾的),使用 let 和 const。变量用 let,常量用 const。
快速的猜一下下面的代码会返回什么:
for (var i = 0; i < 10; i++) {
setTimeout(function() { console.log(i); }, 100 * i);
}
答案是
10
10
10
10
10
10
10
10
10
10
let x = 10;
let x = 20; // 错误,不能在1个作用域里多次声明x
注意 const 常量只是值不可变,如果 const 常量的值是一个地址,那么地址对应的对象的内容是可变的。
解构与展开
数组、对象都能解构与展开
{
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 }: any) {
console.log(`Hi, ${name}, ${age}`);
}
sayHi({ name: 'frank', age: 18 });
}
网友评论