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;

    }

  • 相关阅读:
    新autoJS写淘宝福年种福果
    autoJS写淘宝福年种福果
    简七学理财知识
    python一键搭ftp服务器
    域名伪装
    [SWPU2019]Web1
    [网鼎杯 2020 朱雀组]phpweb
    Doc
    Docker简单使用教程
    MySQL数据库基本操作
  • 原文地址:https://www.cnblogs.com/maochunyan/p/9578076.html
Copyright © 2011-2022 走看看