首页 > 其他分享 >Type-challenges题目

Type-challenges题目

时间:2022-11-12 19:31:52浏览次数:41  
标签:遍历 题目 type never number challenges 数组 泛型 Type


Type-challenges题目

13 Hello World

Type-challenges题目_元组

就是类型别名,​​Helloworld​​​就是​​string​​的别名。

类似于cpp里的​​typedef ​​​,语法是​​type [名称] = [数据类型]​

4 实现Pick

Type-challenges题目_typescript_02

type MyPick<T, K extends keyof T = keyof T> = {
[k in K]: T[k];
}

Type-challenges题目_typescript_03

7 实现Readonly

Type-challenges题目_元组_04

type MyReadonly<T> = {
readonly [k in keyof T]:T[k]
}

使用​​readonly​​​关键字声明属性是只读属性。
使用​​​keyof T​​​取出泛型​​T​​​中的所有key,再用​​in​​遍历。


11 元组转换为对象

Type-challenges题目_typescript_05

type TupleToObject<T extends readonly any[]> = {
[k in T[number]]: k
}

泛型​​T​​​是数组,数组以​​number​​​为索引,所以​​T[number]​​对应数组中的每个值。

使用​​in​​​遍历​​T[number]​​​,也即遍历泛型数组​​T​​中的每个值。

14.第一个元素

Type-challenges题目_数组_06

type First<T extends any[]> = T[0] extends T[number]?T[0]:never

需要特判数组长度是否为0,这里用T[0]是否为T[number]的子集判断,T[number]默认返回值组成的数组。

18 获取元组长度

Type-challenges题目_泛型_07

type Length<T extends readonly any[]> = T['length']

注意只有any[] 数组类型才有length 这个index type

43 Exclude

Type-challenges题目_泛型_08

extends关键字这里对T、U进行分布式遍历,所以T满足U的话就返回never否则就返回T

type MyExclude<T, U> = T extends U?never:T

标签:遍历,题目,type,never,number,challenges,数组,泛型,Type
From: https://blog.51cto.com/u_15326986/5846774

相关文章

  • Sonatype Nexus 如何把多仓库合并在一起
    我们都知道,在开发的时候有些包可能是没有办法从Central仓库中下载下来的。 因为一些项目会有自己的仓库,这些内容并没有推送到Central中。根据网站:​​https://mvnrepos......
  • [Typescript] 99. Hard - CamelCase
    Implement CamelCase<T> whichconverts snake_case stringto camelCase.ForexampletypecamelCase1=CamelCase<'hello_world_with_types'>//expectedtobe......
  • [C++] - GCC和LLVM对方法 warning: non-void function does not return a value [-Wre
    最近做一个C++开源项目发现一个奇怪问题,通过clang编译链接执行程序每到有一个就崩溃了,gcc下则没有此问题。后来通过调试,发现原因是bool返回的方法是没有return语句!问......
  • [Typescript] 98. Medium - Append to object
    Implementatypethataddsanewfieldtotheinterface.Thetypetakesthethreearguments.Theoutputshouldbeanobjectwiththenewfield.Forexamplety......
  • Typescript类型体操 - Unique
    题目中文实现类型的Lodash.uniq,Unique接受数组T,返回没有重复值的数组TEnglishImplementthetypeversionofLodash.uniq,UniquetakesanArrayT,returns......
  • Typescript类型体操 - LastIndexOf
    题目中文实现类型的Array.lastIndexOf,LastIndexOf<T,U>接受泛型参数ArrayT和anyU并返回数组T中最后一个U的索引示例:typeRes1=LastIndexOf<[1,2,3......
  • 【TS】1103- 30个小知识让你更清楚TypeScript
    TypeScript是Microsoft开发的JavaScript的开源超集,用于在不破坏现有程序的情况下添加附加功能。由于其独特的优势,例如,静态类型和许多速记符号,TypeScript现在被前端和......
  • [Typescript] Zod in actions
    import{z}from"zod";exportenumSUBTYPE{ABORT="abort",START="start",UPLOAD="upload",LOADING="loading",}exportconstTYPE="print"......
  • JS-Object.prototype.toString.call(value)-查看值的数据类型的通用方法
    前端开发项目中,常常会遇到判断一个变量的数据类型等操作,在JavaScript里使用typeof来判断数据类型,只能区分基本类型,即“number”,”string”,”undefined”,”boolean”,”......
  • typescript装饰器
    属性装饰器参数exportdefaultfunction(proto,key){//两个参数}给属性增加metadataimport'reflect-metadata';exportdefaultfunction(label,type?......