lyjava 2020-09-11
本文转载自微信公众号「小姐姐味道」,作者小姐姐养的狗 。转载本文请联系小姐姐味道公众号。
前端那么多酷炫的东西,真是太好玩了。但是,JavaScript是个拦路虎,尤其是熟悉了Java之类的强类型检查语言之后,每次看到js都感觉不爽。作为一个后端,写JavaScript真的是有一种写吐了的感觉。万幸现在有了更好的选择。
为什么要学习TypeScript呢?因为它的语法和Java真的很像。有了这个东西,就可以摆脱恼人的JavaScript,拥抱前端的技术栈。
TypeScript是JavaScript的超集。意思就是在ts中可以直接书写js。在我的第一感觉里,js就像是编译后的可执行文件,而ts就像是Java语言,或者Scala语言等。不过,这也只是类比而已,ts中的很多语法,其实大多数是编译期用的,在真正的js文件里,抹除了很多的信息。
如上图,ts文件通过tsc编译器,生成普通的js文件。接下来,就可以使用node命令执行这个普通的js文件。
下面是一段简单的ts代码。是不是和Java很像?
class Animal { public name; protected a; private b: string; constructor(name) { this.name = name; } sayhi() { return `my name is ${this.name}`; } } class Cat extends Animal { constructor(name) { super(name) } sayhi() { return "meow " + super.sayhi() } static iaAnimal(a) { return a instanceof Animal; } } function gen<T extends Animal>(name: T): void { console.log(name.name) }
下面简单介绍一下一些基本的语法,当然了,有些语法是ES6的,但我也把它揉在一块了。
类型相关
由于js是一门弱类型的语言,有很多的运行时转换,就不能使用类似于Java一样的强类型转换方式,所以typescript可以在编译阶段通过语言特性增强一些类型检查的功能。而在运行时,大多数根本就没有这样的判断,所以ts更像是一个过程工具。
对于一门语言来说,肯定离不开基本数据类型和自定义类型。ts提供了一系列的关键字作为特殊类型代号,其他的都好说,唯一让我有点兴趣的是联合类型,这非常有趣的一个特性。
声明相关
那什么是declare呢?私以为这个类似于python中的__init__.py文件,用于暴露一些接口和函数,另外为代码自动补全提供了基本数据。
两个默认的约定。配置了tsconfig.json以后,可以直接执行tsc命令进行编译。///三斜杠指令,很丑。
关于Class
从Java过来的同学,会发现这些概念和Java是类似的,不过ts的语法更加简单。
关于type、interface、class
开发工具
tsc是typescript的编译器。如果编译出错,可以指定底层的语法特性。
tsc --target es6
建议配置在tsconfig.json文件里,会被自动识别。
{ "compilerOptions": { "module": "commonjs", "outDir": "lib", "declaration": true, "target":"es6" } }
vscode,通过.d.ts文件,可以做到自动补全和语法检查。但针对于复杂的个性化配置,还是无法做到类似idea那样智能的提示和配置。
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。以上实例中 7、5 和 12 是操作数。关系运算符用于计算结果是否为 true 或者 false。逻辑运算符用于测定变量或值之间的逻辑。