第一种使用尖括号 (<string>someValue).length
第二种使用as关键字 (someValue as string).length
ts中使用let和const声明变量,并且具有块级作用域(花括号作用域)
使用最小特权原则,所有变量除了你计划去修改的都应该使用const
const [first ,second] = [1,2]
const {a,b} = {a:1,b:2}
解构可以加默认值 {a,b=100}
...操作符有展开的作用
let first = [1,2,3]
let a=[1,...first]
ts的核心原则之一是对变量类型进行强制检查。可以叫做填鸭式辩型或者结构性子类型化。
接口可以声明可选属性,实现不一定需要具有此类属性
interface ISquare{
color?:string
width?:number
}
有些属性只能在对象实例化的时候赋值
interface Point{
readonly x:number
readonly y:number
}
let p:point = {x:1,y:100}
p1.x=5 //error
ReadonlyArray<T>类型可以创建一个只读的数组
let r:ReadonlyArray<number>= [1,2,3]
r[0] = 2 //error
readonly vs const
如果限制的是对象则使用const 如果限制的是对象的属性 则使用readonly
一般情况下,接口的实现需要满足刚好覆盖其中的所有属性,但是有时候会有动态添加额外属性的需求
同java这类语言一样
extends 关键字:类型java
通过super关键字指代父类(this指代本类) 这个例子也演示了如何在子类中重写父类的方法
private 私有修饰符 只能在本类中被访问的成员
public 公共修饰符 所有地方都能访问
protected 受保护修饰符 在继承类中能被访问
readonly 修饰 只读属性 必须在声明或者构造函数中被初始化
一般作为派生类的基类使用,不能被实例化,抽象类和接口不同的是:抽象类有更多成员的细节
abstract关键字用于定义抽象类和抽线方法
子类继承了抽象类可以去重写里面的方法
完整定义一个函数
函数赋值是不用指定具体类型,会根据类型进行推断
将未知的参数合并到一个集合中
js语言中,this是在函数调用时指定的,函数内部的this指向调用该函数的对象,如果没有对象,则指向window,严格模式下则为undefined
即:函数签名一样,但参数类型,个数和返回值类型不同;
js是动态类型,且参数可变,不存在重载的说法
但是TS可以跟c#一样,定义方法的重载
当创建函数或者对象时,不确定参数的类型,或者可以适用多种类型时,可以用泛型定义
和any不同,any完全不约束传入参数的类型,但是泛型会约束传入参数和返回值的类型一致性
如果不对泛型做约束,所有的类型都需要通过操作验证,比如string有length属性但是boolean没有,如果我们直接在泛型上使用length属性,就会报错,假设我们通过泛型约束去约束类型必须有length属性(即必须继承包含length属性的接口)就不会报错了
希望一个变量同时支持多种类型,使用竖线分割
this类型表示的是某个类或者接口本身
TS是JS的一个超集,TS包含了JS的库和函数,TS上可以写任何的JS,调用任何的JS库。ts需要静态编译,它提供了强类型与更多面向对象的内容。
1、TypeScript 引入了 JavaScript 中没有的“类”概念
2、TypeScript 中引入了模块的概念,可以把声明、数据、函数和类封装在模块中。
3、js没有重载概念,ts有可以重载
4、ts对比js基础类型上,增加了 void/never/any/元组/枚举/以及一些高级类型
一、程序不同:
ts需要静态编译,它提供了强类型与更多面向对象的内容。TypeScript是JavaScript的超集,可以编译成纯JavaScript。这个和我们CSS离的Less或者Sass是很像的,用更好的代码编写方式来进行编写,最后还是友好生成原生的JavaScript语言。
二、运行不同:
ts最终仍要编译为弱类型的js文件,基于对象的原生的js在运行。故ts相较java/C#这样天生面向对象语言是有区别和局限的,TypeScript是一个应用程序级的JavaScript开发语言。这也表示TypeScript比较牛逼,可以开发大型应用,或者说更适合开发大型应用。
主要功能
TypeScript的作者是安德斯·海尔斯伯格,C#的首席架构师,它是开源和跨平台的编程语言。它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。
TypeScript扩展了JavaScript的语法,所以任何现有的JavaScript程序可以运行在TypeScript环境中。TypeScript是为大型应用的开发而设计,并且可以编译为JavaScript。