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;

    }

  • 相关阅读:
    PHP 抽象类
    PHP使用rabbitmq发邮件简单使用
    自定义Chrome插件Vimium
    用Paint Tool SAI绘制漫画
    AutoHotkey 使用笔记
    Unity 性能
    VS2015解决非Unicode编码包含中文字段无法编译的问题
    高DPI设置时禁用显示的方法
    Excel 统计在某个区间内数值的个数
    自定义宏把Word打造成全快捷键编辑器
  • 原文地址:https://www.cnblogs.com/maochunyan/p/9578076.html
Copyright © 2011-2022 走看看