TypeScript已经开始,我们上次简单的说到了如何配置TS的编译环境以及简单的说到了一下TS的类型注解和类型推断的这两个简单的概念,今天将要说到的是TS中函数的注解定义,interface接口和type类型:

首先我们先来看下函数的注解定义:

//TS函数注解定义语法:
const func = (str : string): number => {   // (str为参数: string 为参数的类型: number 为函数的返回值类型
   // 函数体
}

// 定义方式2
const func:(str:string) => number = (str) => { // (str 函数参数: string参数类型) => number返回值类型
   // 函数体
}

TS中函数的定义其实和JS中区别不是特别的大,只是需要指定函数的参数类型,函数的返回值类型,上面的定义中也注释了相应的参数的含义。

Interface: 关于interface接口: 当使用的有些数值类型是一些自定义的对象这样的数据类型时,就可以使用interface定义这样的数据类型,当然,interface接口定义的类型中可以包含函数等,这样如果我们需要指定我们定义的一些类中包含某些函数或者数据时,我们可以让这个类去实现这个接口,这就和JAVA语言中的接口的实现有点相似了:

//示例: 我们定义了一个Person的数据类型
interface Person{
     name: string,
     // 当interface中的某些的数据项可有可无时,我们可以在变量名后面加上一个?进行指定
     age?: number,
     // 当需要指定interface中定义的一些数据项是只读的时,可在数据项前加上readonly属性
     readonly weight: number,
     //若需要我们定义的这个数据类型除了包含以上的数据外,还可以有其他的任意的数据,则可以按照如下的方式进行指定,表示可以有其他的数据,只要满足其变量名类型为string,变量值为any即可
     [propeName: string]: any
}

若我们使用一个类实现一个接口的时候,我们可以这样书写:

// 使用User类实现Person接口
class User implements Person{
	// 类中我们需要实现Person接口中定义的所有的必须实现的数据类型 
}

同样接口定义的数据类型我们也是可以像类一样进行继承的:

interface Person{
	name: string,
	age: number
}
//使用Worker继承Person接口,继承后可以在继承接口中包含其父接口的所有的数据类型
interface Worker extends Person{
	num: number
}

注: interface接口中只能够定义像函数或者对象 这样的特殊的数据类型,但是不能够为基础的数据类型指定别名

Type: 自定义类型的方式还可以使用type关键字进行指定:如下所示:

type Person{
	name:  string,
	age?: number
}

使用type定义的数据类型其实和interface是相似的,也可以让一些数据时只读的,指定可以有更多的类型的数据等等,它和interface的区别在于type关键字可以为基础数据类型指定别名