从一些简单的示例中学习类型的体操。
所有主题均来自类型挑战的挑战。
问题答案同步到github
通用类型可以理解为类型函数。它的意思是类型参数,与表单参数相同,<>可以写的任何字母。
由Anthony Fu(@antfu)#B #Union#内置
实现构建的TS,但不能使用它。
从类型中选择属性,然后创建一个新类型。
例如:
const obj = {foo:1,bar:2,baz:3,};
const foo = getProperty(obj,“ foo”);const b = getroperty(obj,“ b”);console.log(b);// 不明确的
用于确定是否可以分配的所有成员属性。
使用上述示例分解:
2。
//穿越组合类型的属性=“ name” |“年龄” |“ Phonenum”;type propertyObject = {[属性中的键]:string};
由Anthony Fu(@antfu)#B#内置#Readonly#object-keys
请勿使用构建-in,而是独自实施。
会议收到一个通用参数并返回完全相同的类型,但所有属性都将被修改。
也就是说,不再可以分配对象的属性。
例如:
//初始化const down foo:foo = {bar:123,bas:456};
//不能更改foo.bar = 456;//错误:foo.bar仅读取属性
由Sinoon(@Sinoon)#B
传递到元组类型中,将此元组类型转换为对象类型,该对象类型的键/值从元组中遍历。
例如:
const a2 ='123'type a2 = typeof A2 //'123'a2 =“ 321” //不能分配给“ A2”,因为它是恒定的。
//结果:( a:number,b:number)=>数字类型t1 = typeof add //结果:{name:string;agpe:} type t2 = typeof obj
它与上面相同,但是您需要首先使用元组的所有元素,
然后穿越,
因为它是获得的元素,所以返回值将直接返回到p。
请注意,TE将在通用类型中扩展了ROADONLY String [],如果您使用任何内容,则会导致 @ts-expect-error通过。
@ts-expect-error,如果我们在代码行的前面发布此注释,Typescript将期望以下代码报告错误。报告错误是正常的。
由Anthony Fu(@antfu)#B #array
实现将军,接受数组并返回其第一个元素类型。
例如:
让func1:func;// =>布尔值LET func2:func<''>;// => boolean let func3:func<() => 承诺>;// =>承诺
您需要在这里注意,首先<[3, 2, 1]>通用中的所有参数都是类型而不是JavaScript对象。
由Sinoon(@Sinoon)#simple #tuple
创建一个通用,接受数组,然后返回此数组的长度。
例如:
关于这一点没有什么可说的,知识点已上述。当引入通用时,必须在约束下通过元组,否则测试案例将不会通过
Zheeeng(@zheeeng)#simple#内置
实现构建的TS,但不能使用它。
由Maciej Sikora(@maciejsikora)#B #B #Promise#内置
如果我们有一个承诺对象,此承诺对象将返回类型。在TS中,我们使用t来描述Promise Back的类型。请实现一种类型来获取此类型。
例如:,请返回exippletype类型。
这个挑战来自@maciejsikora文章:原始文章
没什么可说的,知识点已上述。入口值需要被限制为承诺,而回报值需要递归以确定承诺的通用参数是否为承诺。
由Pavel Glushkov(@pashutk)#B #Utils
实现一种类型,它接收条件类型,判断为实时的返回类型以及判断为假货的返回类型。它只能是或可以是任何类型。
例子:
这个问题本身非常简单。请注意限制C条目的类型。
关键是TS配置,有时有时不包含在不同的环境中。
在中间打开。
建议在任何情况下打开严格的模式检查。
由Andrey Krasovsky(@bre30kra69cs)#B #array
在类型系统中实现构建的JavaScript方法。此类型接受两个参数。返回的新数组类型应从从左到右的输入参数的顺序合并为新数组。
例如,
这无话可说,使用JS的想法,使用操作员扩展操作员,然后查看添加约束的错误。
由null(@kynefuk)#b #array
在类型系统中实现JavaScript的方法。此类型接受两个参数。返回类型是。
例如,
这个问题有点复杂。通常,最好将仿制药用于首先编写想法,然后将其转换为仿制药。
或自己写一个
由Jiangshan(@jiangshanmeta)#B #array
在类型系统中实现通用 - 可使用。
例如,如下所示
再次康复非常简单,没什么可说的。
由Jiangshan(@jiangshanmeta)#B #array
实现类型版本。
例如,
发送主题,与上述相同。
由Midorizemi(@midorizemi)#B #Infer #tuple#内置
实现构建的 - 参数类型,而不是直接使用它,可以参考打字稿的官方文档。
这是一个熟悉的应用程序。
原始:https://juejin.cn/post/7103046028235898888