javastring转number_半天掌握TypeScript,感觉就像写Java

更新时间:2023-07-08 14:14:57 阅读: 评论:0

javastring转number_半天掌握TypeScript,感觉就像写Java
原创:⼩姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。
形容丰收的成语
前端那么多酷炫的东西,真是太好玩了。但是,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提供了⼀系列的关键字作为特殊类型代号,其他的都好说,唯⼀让我有点兴趣的是联合类型,这⾮常有趣的⼀个特性。
typeof 关键字⽤于判断是否是某种类型
string 表明是字符串类型,它不同于Java,⾸字母是⼩写
boolean 和 Boolean类型是不同的
number 直接表⽰数字类型,没有那么多⿇烦的精度问题(0b、0O、0x指明进度问题)
办房产证流程any 是万能类型,相当于Java中的Object,全部是any相当于是普通js。所以,如果你恨ts,就可以⼀路any到天明
never 表⽰那些永不存在的值类型
object 表⽰⾮原始类型,和Java中的不太⼀样
string | number 类似这样的是联合类型,这也是⾮常神奇的⼀点。这⾥只允许这两种类型的转换,并且能调⽤的⽅法,要取两者交集``  之间的字符串可以使⽤类似shell的语法,做模版 ${}
readonly 这竟然是个关键字,表明只读属性
[propName: string]: any; 这⼀⾏代码值得研究,但不推荐这么做
number[] 数组和Java类似,不过这是声明后置的语法,值使⽤[]声明,⽽不是{}
function 函数和javascript的没什么区别,有两种声明⽅式。lambda对js来说肯定是强项
森林防火资料
=>的语法也⽐较恶⼼⼈,和ES6联合起来可以写⼀⼤篇⽂章
...rest 注意这个东西!类似Java中变参的意思
肉松面包的做法as 是⼀个关键字,我们可以理解为Java的cast,但它也仅仅是语法检查⽽已,运⾏时并⽆法控制。(window as any)很酷,但容易出错声明相关
let ⽤来声明普通变量,作⽤域⼩,{}之内
var  作⽤域⼤,函数级别或全局
const 只读变量,是静态的;readonly却是动态的,只不过声明后不能改⽽已
declare var  声明全局变量( .d.ts后缀的⽂件,这是⼀种约定)
declare function 声明全局⽅法
declare class 全局类
declare enum 全局枚举类型
declare namespace 全局命名空间
export 这个主要是⽤于npm的,后续可以使⽤import导⼊
那什么是declare呢?私以为这个类似于python中的__init__.py⽂件,⽤于暴露⼀些接⼝和函数,另外为代码⾃动补全提供了基本数据。
两个默认的约定。配置了tsconfig.json以后,可以直接执⾏tsc命令进⾏编译。///三斜杠指令,很丑。
关于Class
从Java过来的同学,会发现这些概念和Java是类似的,不过ts的语法更加简单。
get t 竟然是关键字,后⾯可直接跟上函数。可以改变属性的赋值和读取⾏为!
static、instanceof、public、protected、private这些也都是有的,真的感觉和写Java没什么两样
constructor 默认是构造⽅法,不像是Java要和class的名词⼀样
abstract 也有,表明⼦类必须实现,没什么两样
关于类和接⼝的区别,我觉得熟悉java的,对ts来说就是透明的
范型在Java⾥,语法也是⾮常的变态,因为你很多时候不知道要把<>放在什么地⽅。在ts中,⼀样的难受。具体怎么熟悉,只有在实践中磨练了
关于type、interface、class
interface 定义了接⼝,这⾥的接⼝有意思,可以声明实体,但是必须全部赋值才⾏。可以通过在成员变量前⾯加?的⽅式来表明⾮必须,但很丑; ?也可以定义函数的可选参数,6的很
type 和interface⼀样,在编译时,会被抹除。两者语法有细微差别,同时type可以定义更多类型,⽐如基本类型、联合类型、元组等class 可以在⾥⾯实现⽅法,有点Java的味道了,所以不会被编译器抹除。javascript使⽤构造函数模拟class。
开发⼯具
tsc是typescript的编译器。如果编译出错,可以指定底层的语法特性。
tsc --target es6
建议配置在tsconfig.json⽂件⾥,会被⾃动识别。
{
"compilerOptions": {
"module": "commonjs",
电脑运行内存怎么扩大"outDir": "lib",
"declaration": true,
"target":"es6"
}
}
vscode,通过.d.ts⽂件,可以做到⾃动补全和语法检查。但针对于复杂的个性化配置,还是⽆法做到类似idea那样智能的提⽰和配置。
由此造成的后果就是,⼿头上必须有⼀份参考⽂档,并对参考⽂档的⽬录和功能熟悉。在遇到相应的配置参数时,不得不翻阅到相应的地⽅,然后拷贝过来。这对于⼀个javaer来说,实在是太痛苦了。

本文发布于:2023-07-08 14:14:57,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1073069.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:类型   语法   声明   类似   基本   联合   熟悉   配置
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图