You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Interface 只能定義 class 的 public 部分,無法定義其 private 與 protected 部分。
Constructor interface
Function interface
在 OOP,我們期望 class 該有哪些 public property 與 method,可使用 class interface 描述。
在 FP,我們會期望 function 該有哪些 signature,可使用 function interface 描述。
// Here we define our Food interface, its properties, and their types.interfaceFood{
name: string;
calories: number;}// We tell our function to expect an object that fulfills the Food interface. // This way we know that the properties we need will always be available.functionspeak(food: Food): void{console.log("Our "+food.name+" has "+food.calories+" calories.");}// We define an object that has all of the properties the Food interface expects.// Notice that types will be inferred automatically.varice_cream={name: "ice cream",calories: 200}speak(ice_cream);
接口类型可以作为方法的参数类型,接口也可以定义方法的类型,和数组类型
interfaceFuncType{(x: string,y: string): string;// 声明方法成员}
let func1: FuncType;func1=function(prop1: string,prop2: string): string{// 方法参数名称不需要与接口成员的参数名称保持一致returnprop1+' '+prop2;}interfaceArrayType{[index: number]: string;// 声明数组成员}
let arr: ArrayType;arr=['Dog','Cat'];
TypeScript + React
在使用 Typescript 时,React.Component 是一个通用类型 (也被写作
React.Component<PropType, StateType>
),所以你实际上需要给它提供 prop 和 state(可选)的类型:这里
React.Component<Props, object>
第一个是props的参数类型, 第二个是state的类型。因为我们暂时用不到state,所以简单放一个objcet类型即可。在
@types/react
中已经预定义一个类型type SFC<P>
,它也是类型interface StatelessComponent<P>
的一个别名,此外,它已经有预定义的children和其他(defaultProps、displayName等等…),所以我们不用每次都自己编写!使用TS写react组件,与es6的区别是props和state的定义:
Interface 和 type
编写库或第三方环境类型定义时,对于公共API总是使用Interface
考虑使用React Component Props和State的类型
interface 可以继承,type不可以
解构赋值的数据类型声明
关于函数参数默认值
非空断言标志符
关于命名空间
所以namespace也不过就是一个匿名函数的自执行而已,将namespace的名字作为其参数而已
Interface
TypeScript 一共提供 6 种 interface
要求 class 需具备哪些 public method 与 property 时,会使用 interface 特別定义。
Interface 只能定義 class 的 public 部分,無法定義其 private 與 protected 部分。
在 OOP,我們期望 class 該有哪些 public property 與 method,可使用 class interface 描述。
在 FP,我們會期望 function 該有哪些 signature,可使用 function interface 描述。
对象的类型——接口Interface
接口名一般首字母大写。定义的变量比接口少/多了一些属性都是不允许的。
其实接口就是定义了一个对象有哪些属性,并且属性值是什么类型。如果一个函数返回了一个对象,那么可以用来限定函数返回值类型。
一个接口可以继承多个接口,创建出多个接口的合成接口。
接口通常会根据一个对象是否符合某种特定结构来进行类型检查。当转译成 JavaScript 时,接口会消失 – 它们唯一的目的是在开发阶段里起到辅助的作用。
如果接口需要在其他地方被使用,那么Interface需要export
这里,我们定义一个简单接口来对函数自变量进行类型检查:
接口类型可以作为方法的参数类型,接口也可以定义方法的类型,和数组类型
TypeScript的接口支持继承与实现。类通过implements关键字继承接口,并实现接口成员。
The text was updated successfully, but these errors were encountered: