TypeScript


1. 什么是ts?
ts 全称是 TypeScript
TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准,完全兼容 JavaScript。
TypeScript 是 添加了类型系统的 JavaScript,适用于任何规模的项目
TypeScript 由微软开发的自由和开源的编程语言。
TypeScript 可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在任何浏览器上。
即:TypeScript可以在任何浏览器、任何计算机和任何操作系统上运行,并且是开源的。

2. JavaScript 与 TypeScript 的区别?
TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改,TypeScript 通过类型注解提供编译时的静态类型检查。
TypeScript 可处理已有的 JavaScript 代码,并只对其中的 TypeScript 代码进行编译。
JavaScript 是静态类型语言, TypeScript是动态类型语言, 它们都是弱类型的, 请见附件: 类型扩展.txt

3. TS在JS基础上扩充的语法有哪些?
    类型注解
    类型推断
    类型断言
    接口(难)
    元组
    联合类型
    泛型(难)
    枚举
    命名空间
    声明文件

4. 如何在浏览器或node中运行ts?
ts语法一般写在以.ts结尾的文件中, 不能直接在浏览器或node环境中运行, 需要借助tsc编译器
typescript模块包提供一个编译器tsc(typescript complier),编译器主要是把ts语法转换纯js语法。
浏览器或node运行ts能成功有个前提: ts文件中是原来的旧的js语法。没有使用ts的新语法
每次修改 ts文件 对应的 js文件是不会自动更新的 需要每次改完ts都进行重写编译
全局安装:  
    cnpm|npm install -g typescript || yarn add -g typescript
检查是否安装成功:
    tsc --version
编译命令: 
    tsc xxx.ts    会在当前源码所在文件夹中生成同名的js文件
    tsc xxx.ts --outFile newfile.js  指定文件名
    tsc xxx.ts --outDir libs         指定目录
    tsc    直接编译, 须结合tsconfig.json配置文件使用

编译命令帮助文档:https://www.tslang.cn/docs/handbook/compiler-options.html

5. vscode  插件
    TypeScript Hero
    TypeScript Importer
    TSLint

 

1, 如何理解静态语言和动态语言?

    类型系统按照类型检查的时机来分类,分为动态类型和静态类型,动态是在运行时候才检查数据  类型,静态是在编译时候检查数据类型

    静态语言是在编译期间就会做数据类型的检查,也就是要在写代码的时候就声明变量的数据类型。大部分的后台语言比如 java,php 等以及我们要学的 ts 都是静态的。
    动态语言是指在运行期间才会去做类型检查的语言,也就是说动态语言声明的时候不需要指定数据类型。比如 javascript 和 python 都是动态的。

2, 什么是强类型和弱类型?

    强类型和弱类型是类型系统按照 是否允许隐式转换 来分类

    强类型的语言 指的是 强制数据类型定义的语言,也就是说如果一个变量被指定了某一个类型,如果不经过强制数据类型转换,他永远都是这个数据类型。强类型好处是 更加严谨更加安全。
    弱类型 是 数据类型可以被忽略的语言,与强类型相反,一个变量可以赋不同的数据类型的值。好处是 编写代码速度更快更简单。

    ts 可以理解为就是静态的 js 语言,TypeScript 是完全兼容 JavaScript 的,它不会修改 JavaScript 运行时的特性,所以它们都是弱类型。

3, ts扩展, 看一下
    从 JavaScript 程序员的⾓度总结思考,循序渐进的理解 TypeScript。
    什么是TypeScript?
    TypeScript是⼀种添加了类型系统的 JavaScript,适⽤于任何规模的项⽬。
    我们都知道JavaScript是⼀种弱类型的语⾔。⽽TypeScript增强了它的类型。
    由于JavaScript 是⼀门⾮常灵活的编程语⾔,这将导致:
    它没有类型约束,⼀个变量可能初始化时是字符串,过⼀会⼉⼜被赋值为数字。
    由于隐式类型转换的存在,有的变量的类型很难在运⾏前就确定。
    基于原型的⾯向对象编程,使得原型上的属性或⽅法可以在运⾏时被修改。
    函数是 JavaScript 中的⼀等公民[2],可以赋值给变量,也可以当作参数或返回值。
    这种灵活性就像⼀把双刃剑,⼀⽅⾯使得 JavaScript 蓬勃发展,⽆所不能,从 2013 年开始就⼀直蝉联最普遍使⽤的编程语⾔排⾏榜冠军;
    另⼀⽅⾯也使得它的代码质量参差不齐,维护成本⾼,运⾏时错误多。
    ⽽ TypeScript 的类型系统,在很⼤程度上弥补了 JavaScript 的缺点。它是静态语⾔。
    ⽽JavaScript是动态语⾔,如下⾯的代码直到运⾏时才会报错:
    let foo = 1;
    foo.split(' ');
    同样是这段代码,在TypeScript下编译时就会报错了。
    let foo = 1;
    foo.split(' ');
    你可能会奇怪,这段 TypeScript 代码看上去和 JavaScript 没有什么区别呀。没错!⼤部分 JavaScript 代码都只需要经过少量的修改(或者完全不⽤修改)就变成 TypeScript 代码,这得益于 TypeScript 强⼤的[类型推论][],即使不去⼿动声明变量foo的类型,也能在变量初始化时⾃动推论出它是⼀个number类型。
    完整的 TypeScript 代码是这样的:
    let foo: number = 1;
    foo.split(' ');
    TypeScript 是弱类型:
    类型系统按照「是否允许隐式类型转换」来分类,可以分为强类型和弱类型。
    以下这段代码不管是在 JavaScript 中还是在 TypeScript 中都是可以正常运⾏的,运⾏时数字
    会被隐式类型转换为字符串 加号 +  被识别为字符串拼接,所以打印出结果是字符串 '11'
    console.log(1 + '1');
    作为对⽐,Python是强类型的。需要进⾏强制类型转换。
    这样的类型系统体现了 TypeScript 的核⼼设计理念:在完整保留 JavaScript 运⾏时⾏为的基础上,通过引⼊静态类型系统来提⾼代码的可
    维护性,减少可能出现的 bug。
    TypeScript⾮常适合于⼤型项⽬。在中⼩型项⽬中推⾏ TypeScript 的最⼤障碍就是认为使⽤ TypeScript 需要写额外的代码,降低开发效
    率。但事实上,由于有[类型推论][],⼤部分类型都不需要⼿动声明了。TypeScript 还可以和 JavaScript 共存。这意味着如果你有⼀个使⽤
    JavaScript 开发的旧项⽬,⼜想使⽤ TypeScript 的特性,那么你不需要急着把整个项⽬都迁移到 TypeScript,你可以使⽤ TypeScript 编写
    新⽂件,然后在后续更迭中逐步迁移旧⽂件。如果⼀些 JavaScript ⽂件的迁移成本太⾼,TypeScript 也提供了⼀个⽅案,可以让你在不修改
    JavaScript ⽂件的前提下,编写⼀个[类型声明⽂件][],实现旧项⽬的渐进式迁移。
    事实上,就算你从来没学习过 TypeScript,你也可能已经在不知不觉中使⽤到了 TypeScript——在 VSCode 编辑器中编写 JavaScript 时,
    代码补全和接⼝提⽰等功能就是通过 TypeScript Language Service 实现的。
    ⼀些第三⽅库原⽣⽀持了 TypeScript,在使⽤时就能获得代码补全了,⽐如 Vue 3.0
    有⼀些第三⽅库原⽣不⽀持 TypeScript,但是可以通过安装社区维护的类型声明库(⽐如通过运⾏
    来安装
    npm install --save-dev @types/react
    React 的类型声明库)来获得代码补全能⼒——不管是在 JavaScript 项⽬中还是在 TypeScript 中项⽬中都是⽀持的:
    2016-05:@types/react 发布,TypeScript 可以开发 React 应⽤了。
    2016-05:@types/node 发布,TypeScript 可以开发 Node.js 应⽤了。
    2020-09:Vue 发布了 3.0 版本,官⽅⽀持 TypeScript。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值