zoukankan      html  css  js  c++  java
  • typescript 接口

    属性接口

    interface SquareConfig

       {

        color?: string;

        width?: number;

          }

    function createSquare(config: SquareConfig): { color: string; area: number } { // ... }

    let mySquare = createSquare({ colour: "red", 100 });

    这个例子会报错,原因是:

    如果一个对象字面量存在任何“目标类型”不包含的属性时,你会得到一个错误。

    其中,colour:red 就不包含在目标类型中,会报错

    解决方式1:使用类型断言:可以在后面加 as SquareConfig 即可。如:

    let mySquare = createSquare({ colour: "red",  100 } as SquareConfig);

    解决方式2:将这个对象赋值给一个另一个变量: 因为squareOptions不会经过额外属性检查,所以编译器不会报错。

    let squareOptions = { colour: "red", 100 };

    let mySquare = createSquare(squareOptions);

    解决方式3:字符串索引签名

    interface SquareConfig {

      color?: string;

      width?: number;

      [propName: string]: any;

    }

    函数接口

    它就像是一个只有参数列表和返回值类型的函数定义。参数列表里的每个参数都需要名字和类型。

    interface SearchFunc {

      (source: string, subString: string): boolean;

    }

    这样定义后,我们可以像使用其它接口一样使用这个函数类型的接口。 下例展示了如何创建一个函数类型的变量,并将一个同类型的函数赋值给这个变量。

    let mySearch: SearchFunc;

    mySearch = function(source: string, subString: string) {

       let result = source.search(subString); return result > -1;

    }

    函数的参数名不需要与接口里定义的名字相匹配

    如上,也可以使用

    let mySearch: SearchFunc;

    mySearch = function(src: string, sub: string): boolean {

      let result = src.search(sub); return result > -1;

    }

  • 相关阅读:
    hdu 5366 简单递推
    hdu 5365 判断正方形
    hdu 3635 并查集
    hdu 4497 数论
    hdu5419 Victor and Toys
    hdu5426 Rikka with Game
    poj2074 Line of Sight
    hdu5425 Rikka with Tree II
    hdu5424 Rikka with Graph II
    poj1009 Edge Detection
  • 原文地址:https://www.cnblogs.com/maochunyan/p/9578076.html
Copyright © 2011-2022 走看看