小宝宝也一看就会的typescript入门 | 青训营笔记

142 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的第10天

前言

JavaScript并不完美,但是这不妨碍它运行起来。 —— Douglas Crockford

众所周知, JavaScript狗都不用,所以我们需要一门比JavaScript更好的语言,这个时候Typescript出现了。

数据类型

当你在js中创建变量的时候:

s = true;

不过在ts中要这样:

s: boolean  = true;

一看就懂了,我们要让一个弱类型语言看上去要像强类型语言。

面向对象操作

多亏了ts,所以我们才能够写出来真正的好东西。

interface Class{
    //这个就是新加的只读属性,不能在初始化之外赋值
    readonly name:string;
    //可选属性,可以有也可以没有
    hobby? : string;
}

函数

对于函数我们也有了更好操作的类型。

function add(x:number, y:number):number{
    return x+y;
}

对于函数重载的话,我们可以用缺省参数来表示。

数组和元祖

数组类型的话前面需要有个type

type array =number[]
type array2 =[number,string,string]

补充类型

空类型,表示没有赋值,any类型,是所有类型的子类型,还添加了对enum和泛型的支持。

联合类型与交叉类型

Ta|Tb表示可以是这两种类型中的任意一种,Ta&Tb多种类型叠加到一起成为一种类型,包含了两种类型的所有特性。

interface DogInterface{
    run():void
}
interface CatInterface{
    jump():void
}
class Dog implements DogInterface{ 
   run(){}
   eat(){}
}
 class Cat implements CatInterface{
    jump(){}
    eat(){}
}
enum Master {Boy,Girl};
 function getPet(master:Master){
    let pet=master===Master.Boy?new Dog() : new Cat(); 
    pet.eat();
    pet.run();  //报错
    return pet;
}

(代码来自10、typescript的高级类型 - 知乎 (zhihu.com)

typescript在工程中的应用

TypeScript 是 JavaScript 的一个超集,您可以通过它编写和生成更具强类型和面向对象特性的 JavaScript 代>码,但仍保留开发者喜爱的(或有时是憎恨的)JavaScript 的灵活性。TypeScript 扩展了 JavaScript 的用途范>围,让它进入企业应用、网站开发和以往由于缺少相关工具而显得笨拙无力的领域。 —— Rachel Appel

浏览器并不是直接用typescript的代码,而是通过TSC编译后转换成js代码来运行,所以可以完全兼容js的代码,大家大可不必担心。

总结

还是那句话,JavaScript狗都不用。