TypeScript 知识梳理一

为什么学typescript?

本来对与学ts兴趣是不大的,因为项目中没有太大的必要性,而且现在es6很多语法糖/方法函数也让我感觉足够便捷了,没必要再进行一次编译。

总是要有个但是,但是我看vue源码的时候,发现很多都转向了ts。他的核心代码里,也大部分用的ts的语法。虽然记得游雨溪说过ts不会成为主流,但这个变化不得不说 让人觉得,ts有着很大的优势,不然他费什么劲呢。过来学学也不吃亏。

很多东西都是,吃过才能客观的去评价好不好吃。

基础类型

//  布尔值
let isDone: boolean = false;
// 数字
let age: number = 6;
// 字符串
let name1: string = 'bob';
// 拼接变量
let sentence: string = `my name is ${name1} , age is ${age}`;
// 数组
let list: number[] = [1,2,3];
let list2: Array<number> = [1,2,3,4];
// 元组 Tuple
// 元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 string和number类型的元组。
let x: [string, number];
// 枚举 enum类型是对JavaScript标准数据类型的一个补充。 像C#等其它语言一样,使用枚举类型可以为一组数值赋予友好的名字。
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
// Any
let notSure: any = 4;
notSure = 'mabe a string instead'
notSure = false;
// 跟Object的区别
let notSure1: any = 4;
notSure.ifItExists(); // 虽然不存在,但并不报错
let prettySure: Object = 4;
// prettySure.toFixed(); // 报错 Error: Property 'toFixed' doesn't exist on type 'Object'.
// Void void类型像是与any类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void:
function warnUser(): void {
    console.log("This is my warning message");
}
// Object  object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。
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
*/

//类型断言  通常这会发生在你清楚地知道一个实体具有比它现有类型更确切的类型。
// 类型断言有两种形式。 其一是“尖括号”语法:
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
//另一个为as语法:
let someValue2: any = "this is a string";
let strLength2: number = (someValue as string).length;

随机浏览