相关疑难解决方法(0)

如何有条件地检测 TypeScript 中的“any”类型?

我想一个实用程序,我可以直接使用IsStrictlyAny<T>,它会解决的类型true,如果T是完全any和对false否则类型。我怎样才能做到这一点?

我的第一个想法:

type IsStrictlyAny<T> = any extends T ? true : false;
Run Code Online (Sandbox Code Playgroud)

结果:

  • IsStrictlyAny<any>:(true好!)
  • IsStrictlyAny<unknown>:(true不好!-我想要false
  • IsStrictlyAny<string>:(boolean不好!-我想要false

typescript conditional-types

8
推荐指数
3
解决办法
487
查看次数

可调用的打字稿接口不可调用?

我正在尝试编写ts-optchain. 功能将尝试返回具有拼接更改的根对象的副本。这样原件不会以任何方式改变或修改。然而,对于尚未修改的对象区域,它们作为引用(通过Object.assign(...))复制到浅复制操作中。

我试图验证的测试如下:

const example = { a: { b: { c: { d: 5 } } } };
const out = osc(example).a.b.c.d(6);
expect(out).to.be.deep.eq({ a: { b: { c: { d: 6 } } } });
Run Code Online (Sandbox Code Playgroud)

... 其中osc(可选设置链)是我对 mimmicopt-chainoc功能所做的功能。

我期待结果有点类似于 Object.assign({}, example, {a: Object.assign({}, example.a, {b: Object.assign({}, example.a.b, {c: Object.assign({}, example.a.b.c, {d: 6})})})});

上述方法编写、阅读和维护都很痛苦。因此,使这个功能的推理。

实施

我的尝试如下:

// ----- Types -----
// Generic type "R" -> The returned root object type …
Run Code Online (Sandbox Code Playgroud)

typescript

7
推荐指数
1
解决办法
2万
查看次数

打字稿检查'any'类型

是否可以any使用打字稿条件语句检查确切的类型?

type IsAny<T> = T extends any ? true : never

type A = IsAny<any> // true
type B = IsAny<number> // never
type C = IsAny<unknown> // never
type D = IsAny<never> // never
Run Code Online (Sandbox Code Playgroud)

typescript

4
推荐指数
2
解决办法
122
查看次数

如果指定了泛型,则禁止使用任何调用

我尝试应用此解决方案来禁止调用第二类型等于 的泛型函​​数any

以下构造一直有效,直到明确指定第一个通用参数:

 declare function f<V = any, A extends ISmth = ISmth>(a: IfAny<A, never, A>): V;
Run Code Online (Sandbox Code Playgroud)

如果我需要V成为第一个参数并且是可选的(它是返回类型并且无法推断 - 它应该明确指定或可以是任何),我该如何修复代码?

我尝试更改默认值,但它会破坏任何具有显式第一类型的调用:

declare function g<V = any, A extends ISmth = any>(a: IfAny<A, never, A>): V;
Run Code Online (Sandbox Code Playgroud)

完整代码:

interface ISmth { x: number; }

type IfAny<T, Y, N> = 0 extends (1 & T) ? Y : N;

declare function f<V = any, A extends ISmth = ISmth>(a: IfAny<A, never, A>): V;
declare function g<V = …
Run Code Online (Sandbox Code Playgroud)

generics typescript

1
推荐指数
1
解决办法
233
查看次数

标签 统计

typescript ×4

conditional-types ×1

generics ×1