如何防止泛型类型将“any”作为其类型参数?

Nic*_*asB 6 typescript tsconfig typescript-generics

如何防止泛型类型作为any其类型参数?如果我的通用参数受到使用extends关键字的限制,那么它可以被替换为奇怪的感觉any

据我了解,一切都延伸any,但any应该延伸任何东西(除了它本身)。any

这是一个例子:

type OneOrTwo = 1 | 2;
type MyType<T extends OneOrTwo> = T;
const t1: MyType<OneOrTwo> = 1; // OK
const t2: MyType<any> = 2;      // OK
const t3: MyType<OneOrTwo> = 3; // Error: Type '3' is not assignable to type 'OneOrTwo';
const t4: MyType<any> = 4;      // OK?? How can I prevent this?
Run Code Online (Sandbox Code Playgroud)

我可以让打字稿阻止我t4这样打字吗?要么通过更改代码,tsconfig要么使用选项?

gob*_*ien 1

在撰写本文时,您还不能。在代码中的任何位置编写any意味着 TypeScript 根本不会进行任何检查,并且这种情况会传播。在某些情况下,您可以通过设置以下各项的组合来防止隐式 any:

  • 严格的
  • 不隐式任何
  • 严格空检查
  • 无严格通用检查
  • 严格函数类型
  • 严格绑定调用应用

里面tsconfig.json