问答

TypeScript 泛型能减小可用类型的范围吗

作者:admin 2021-05-06 我要评论

function n(a,b) { if (typeof a === "string" typeof b === "string") { return 1 } else if ( a instanceof Dirent b instanceof Dirent) { return 2 } } 已知...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
   function n(a,b) {
     if (typeof a === "string"&& typeof b === "string") {
      return 1
     }
     else if ( a instanceof Dirent &&  b instanceof Dirent) {
      return 2
     }
    }

已知 ab 只会传入 stringDirent (fs.Dirent 类) 类型, 且 a,b 类型一定相同

我想用泛型写,想有泛型约束能减少我的判断次数
不知道怎么能使用泛型 只包含 stringDirent 类型

###

用不着泛型,直接利用 TS 重载就可以,甚至可以约束返回值一定是 1 或者 2

function n(a: string, b: string): 1;
function n(a: Dirent, b: Dirent): 2;
function n(a, b) {
    if (typeof a === "string" && typeof b === "string") {
        return 1;
    } else if ( a instanceof Dirent &&  b instanceof Dirent) {
        return 2;
    }
    
    throw new Error('Invalid Arguments!');
}

image.png

###

用函数重载就行了

###
interface Dirent {
  name: string;
}
type IParmas = Dirent | string;
function n<T extends IParmas>(a: T, b: T) {
    if (typeof a === "string" && typeof b === "string") {
        return 1
    }
    else if ( a instanceof Dirent &&  b instanceof Dirent) {
        return 2
    }
}

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • TypeScript 泛型能减小可用类型的范围

    TypeScript 泛型能减小可用类型的范围

  • 为什么Mybatis plus在Entity与数据库字

    为什么Mybatis plus在Entity与数据库字

  • 如何在JAVA服务端实现类似android里的h

    如何在JAVA服务端实现类似android里的h

  • vantui表单验证时错误提示能改成在输入

    vantui表单验证时错误提示能改成在输入

腾讯云代理商
海外云服务器