interfaceStringConstructor{(value?:any):string;// call signature// ···} 顶级类型 unknown unknown类型是any的类型安全版本。每当你想使用any时,应该先试着用unknown。 在any允许我们做任何事的地方,unknown的限制则大得多。 在对unknown类型的值执行任何操作之前,必须先通过以下方法限定其类型: 类型断言 代码...
如果callback是any, TypeScript 就不会强制callback()语句进行任何类型检查。 3.总结 unknown和any是2个特殊的类型,可以容纳任何值。 推荐使用unknown而不是any,因为它提供了更安全的类型--如果想对unknown进行操作,必须使用类型断言或缩小到一个特定的类型。 编辑中可能存在的bug没法实时知道,事后为了解决这些bug,花...
可以将任何东西赋给unknown类型,但在进行类型检查或类型断言之前,不能对unknown进行操作 可以把任何东西分配给any类型,也可以对any类型进行任何操作 上面的例子正好说明了unknown和 `any 之间的相似和不同。 unknown示例: function invokeAnything(callback: unknown) { // 可以将任何东西赋给 `unknown` 类型, // ...
unknown类型是any的类型安全版本。每当你想使用any时,应该先试着用unknown。 在any允许我们做任何事的地方,unknown的限制则大得多。 在对unknown类型的值执行任何操作之前,必须先通过以下方法限定其类型: 类型断言 function func(value: unknown) { // @ts-ignore: Object is of type 'unknown'. value.toFixed(...
TypeScript 指南并不鼓励使用 any,因为使用它就会丢掉类型限制--而需要类型限制也是我们选择 TypeScript 的一个原因,所以就是有点背道而驰。 TypeScript(3.0 及以上版本)还提供了一种类似于 any 的特殊类型 unknown。 我们也可以为 unknown 类型变量分...
letunknownStr: unknown ='';letanyStr:any='';conststr:string='unknown vs any'; anyStr = unknownStr; anyStr = str; https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#any https://www.typescriptlang.org/docs/handbook/basic-types.html#any ...
使用TypeScript 的过程中,难免会有使用 any 的情况,这个时候倒不如换个方式,使用 unknown 试试。 unknown 最早出现在此 PR 中,随 3.0 一起发布。它被认为是安全版的 any,与 any 不同的是,unknown 仅能赋值给 any、unknown 类型,以及 unknown 上不存在任何属性与方法。 代码语言:javascript 代码运行次数:0...
any、unknown、enum、void、never、tuple... 其实TypeScript 更重要的是通过 interface 和 type 赋予了用户自定义数据类型的能力,使数据在流转的过程中始终能轻易被用户掌握。
好像得用上 unknown 了(其实我想说的是 any,因为 any is 魔鬼,所以还是用 unknown 吧)。function reflect(param: unknown) { return param;} const str = reflect('string'); // str 类型是 unknown const num = reflect(1); // num 类型 unknown 此时,reflect 函数虽然可以接收一个任意类型的参数并...
在许多场景下,这太宽松了。使用 any 类型,可以很容易地编写类型正确但在运行时有问题的代码。如果我们使用 any 类型,就无法使用 TypeScript 提供的大量的保护机制。请记住,any 是魔鬼!尽量不要用any。 为了解决 any 带来的问题,TypeScript 3.0 引入了 unknown 类型。