这是我参与「第四届青训营」笔记创作活动的第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狗都不用。