什么是"键入";TypeScript中的平均值?
我发现上面的问题中,作者问了与我想问的完全相同的问题,但没有答案找到问题的要点。
假设有一个通用方法和一个类。
function fn<K extends keyof typeof A>(key: K) ...
class A {
static a;
static b;
}
我的理由是:
typeof关键字返回一个字符串,显示js的基本类型之一。
因此,无论值是什么,返回类型都是字符串。
所以关键的"应该是索引;长度";以及字符串文字可以拥有的东西。在这种情况下;函数";应返回类型";0〃|"1〃|"2〃|"3〃|"4〃|"5〃|"6〃|"7〃|"长度";。
但实际的行为是typeof类A返回构造函数。
这怎么会发生?
typeof关键字返回一个字符串,其中显示一个js基本类型。
这对JavaScript来说是正确的,但在Typescript中,typeof
可能意味着多种含义,具体取决于上下文。与JS不同的是,在TS中,当typeof
处于预期类型的上下文中时,typeof expression
将计算为expression
的(TypeScript确定的(类型。例如:
let num = 5;
type Num = typeof num;
导致CCD_ 5类型为CCD_。这不是字符串'number'
,而是TypeScript类型number
。
所以,在你的代码中:
function fn<K extends keyof typeof A>(key: K) ...
由于K extends keyof ...
是类型上下文(这对于配置TypeScript对代码的解释很有用,但在发出的JavaScript中不存在(,因此以下typeof
向TypeScript指示用TypeScript检测到的类型a替换typeof A
。
相反,当在类型上下文中不是时:
let someStr = 'foo';
const theType = typeof someStr;
这里,typeof
在运行时JavaScript中使用,而不是作为TypeScript特定的语法,因此它导致theType
在运行时被分配值'string'
。
CCD_ 15的两种使用方式完全不同。