ts是由微软的,是js 超集 。 和es6 的相同点是 都是语法糖 不能直接 在浏览器上用,需要转化
yarn global add typescript
如何编译那?tsc 文件名.ts
java严谨 ,强类型,ts使js变成 强类型
interface接口
定义一个类
interface Foo{
name: string, 定义一个 name string类型
} 可以用作 函数参数的 定义
const foo = (x: Foo) => {
console.log(x.name)
}
foo({name:”string”})
class Person {
//成员变量
name: string
//构造 函数
constructor(name: string) {
this.name = name
}
//成员函数
eat(): void {
console.log(this.name)
}
}
const person: Person = new Person(‘sd’)
console.log(person.name)
//用来继承 接口 ,一般在 子类里定义了子类的 constructor,就会调用父类的 constructor 。所有的constructor都会 初始化一边 ,而且 在子类没有 constructor 的时候,他就会访问父类 的constructor ,但是父类的 constructor 需要穿参数 ,通过 子类的 super 里穿进去,不穿就访问不到
super.方法名 () 在构造函数中 调父类的 方法 。
class Fzz implements Foo {
name:string // = ‘a’ 可以写 一个默认值
age:number
constructor(n:string){
this.name = n
}
sayName(){
console.log( this.name)
}}
const fzz= new Fzz(‘a’)
fzz.sayName()
数据类型
string
number
boolean
enum 枚举 就可以 enum a {1,2}就可以 console.log(a[0])取出来第一个
any 类型 什么都可以
数组类型 string[] 或者 Array
也可以 [‘string’,’number’] // 第一个 是字符串。第二个是数字 类型
:void 不要,函数的返回值 。
可选属性 在 key 的后面加一个?
只读属性 readonly key 名 。 不能更改 ,对数组来说是一个 新的 引用
readonlyArray
额外的 类型检查 as A .就是类似与 A。但是 不能去访问 那个多出来的值
紧急逃离办法 , 换一个别的变量名,但是 还是拿不到值
签名 [任意名字:string] : any 允许什么类型都可以
函数
索引类型
interface C{
[index:nuber] :string 表示我可以使用 下标做索引 。但是必须为 都是string
}
const c:C =[a,b,c]
然后就可以使用 c[0] 拿到a
如果是对象的话 [index.string]:string ,也可以在 []前 加readonly
c[‘键名’]就可以 取值
共有私有 与受保护的修饰符
默认的 成员函数和成员变量 都是 public 可以在子类 和实例上都可以访问;
protected 保护的 在自己的内部 和子类 里 访问,在 实例上访问 ,
如果在constructor 上 写这个 。可以继承
private 只能在自己的 函数内部访问 。如果在constructor 上 写这个 。自己都不能事例化,也不可以继承
readonly 必须在申明的时候 或者 constructor 里 才可以赋初始值
存取器
get
set
在存取的时候 就会自动调用 get set
把值当作计算属性用
静态属性
static 在类上挂载一个静态属性 , 实例不能访问静态属性 。 类自身可以
抽象类
表示 类非常抽象。
不能被 事例化 只能被继承
abstract 方法的话 在 抽象类里 没有实现的方法 叫抽象方法 。 在被继承后必须实现 抽象方法
构造函数
把类当成接口 使用
泛型 可以给一个方法函数变量 ,加一个 类型的 工作
类似于 一个 标记 。
用的 较多的就是 泛型 类
定义一个类 T 然后就可以在这类里用 泛型 T
interface Props {
name: string,
}
interface State {
selectedTab: string,
}
export default class Home extends React.Component
有了 泛型 才可以去 取到 state里的值
