typescript相关知识

本文介绍了TypeScript中的泛型使用,包括如何定义和约束泛型变量以确保类型安全,例如通过`<T extends LengthWise>`限制函数属性。此外,还讲解了Symbol类型及其特性,如唯一性和用于对象键的优势。最后,提到了`tsconfig.json`文件的作用及其配置选项,用于指定项目编译设置。
摘要由CSDN通过智能技术生成

typescirpt

1、如何使用泛型变量: 把参数当做是任意或所有类型

function identity<T>(arg: T): T{
   console.log(arg.length); //Error: T doesn't have.length
   return arg;
}

上述报错是因为: 这些类型变量代表的是任意类型,如果使用这个函数传入的是数字,而数字是没有.length属性的。

2、泛型约束extends: 限制函数属性

interface LengthWise {
  length: number
}
function identity<T extends LengthWise>(arg: T): T{
   console.log(arg.length); //不再报错
   return arg;
}

3、在泛型约束中使用类型参数

声明一个类型参数,且他被另一个类型参数约束。
例子: 用属性名从对象中获取属性,并且这个属性存在于对象上,需要在这两个类型中使用约束。

fucntion getProperty(T,K extends keyof T>(obj: T,key: K) {
return obj[key];
}
let x = {a:1,b:2,c:3};
getProperty(x,'a'); // 1

4、symbol类型

symbol 类型的值是通过Symbol构造函数创建的。

let sym = new Symbol();
let sym2 = new Symbol('key');

Symbols是不可改变且唯一的

let symbol2 = Symbol('key');
let symbol3 = Symbol('key');
symbol2 === symbol3; // false

可以用作对象key

tsconfig.json

作用:指定用来编译这个项目的根文件和编译选项。

{
    "compilerOptions": {
        "module": "commonjs",
        "noImplicitAny": true,
        "removeComments": true,
        "preserveConstEnums": true,
        "sourceMap": true
    },
    "files": [
        "core.ts",
        "sys.ts",
        "types.ts",
        "scanner.ts",
        "parser.ts",
        "utilities.ts",
        "binder.ts",
        "checker.ts",
        "emitter.ts",
        "program.ts",
        "commandLineParser.ts",
        "tsc.ts",
        "diagnosticInformationMap.generated.ts"
    ]
     "include": [
        "src/**/*"
    ],
    "exclude": [
        "node_modules",
        "**/*.spec.ts"
    ]
}

files指定一个包含相对或绝对文件的路径的列表。
include 和exclude属性指定一个文件glob匹配模式列表。支持的glob通配符有:

  • *匹配0/多个字符(不包括目录分隔符)‘
  • ?匹配一个任意字符(不包括目录分隔符)
  • **/递归匹配任意子目录

相关练习
https://juejin.cn/post/7110232056826691591

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值