Javascript 变量类型未知无法访问typescript

Javascript 变量类型未知无法访问typescript,javascript,typescript,types,Javascript,Typescript,Types,如果我使用一个存储在变量中的一级函数,该变量是未知的类型,该怎么办。尝试执行此操作时出现以下编译器错误 错误TS2571:对象的类型为“未知” 需要知道为什么const loadunknown:unknown=()=>{}是个问题,这是我的答案。您的问题没有多大意义,因为如果删除未知,变量foo在您的示例中已经有一个类型(类型:(参数:未知)=>未知)。但我想这只是为了演示 如果将函数foo定义为未知,则typescript编译器不知道foo的类型 关于这一点,好的是,无论谁使用这个变量,都必须

如果我使用一个存储在变量中的一级函数,该变量是
未知的
类型,该怎么办。尝试执行此操作时出现以下编译器错误

错误TS2571:对象的类型为“未知”


需要知道为什么const loadunknown:unknown=()=>{}是个问题,这是我的答案。您的问题没有多大意义,因为如果删除
未知
,变量
foo
在您的示例中已经有一个类型(类型:
(参数:未知)=>未知
)。但我想这只是为了演示

如果将函数
foo
定义为未知,则typescript编译器不知道foo的类型

关于这一点,好的是,无论谁使用这个变量,都必须在typescript编译器允许他通过之前进行类型检查

const foo: unknown = (params: unknown): unknown => {
    return null;
}
// not working -> the typescript compiler says:
// This expression is not callable.
// Type '{}' has no call signatures.
foo('werwq');
因此,使用该变量的人必须首先进行类型检查,typescript编译器让变量的用户将其用作函数

if (typeof foo === "function") {
    foo('werwq');
}
// or even
switch (typeof foo) {
    case "function":
        foo("a");
}

这里有一个答案:不,没有帮助,没有寻找任何与未知之间的区别。需要知道为什么常量loadunknown:unknown是个问题,因为unknown不可调用。尝试
如果(typeof loadUnknown==“function”){loadUnknown(“string”);}
@kevinSpaceyIsKeyserSöze您可以在回答中解释您已经链接了答案,但这里再次说明:)有意义此未知类型应用于变量,因此需要进行类型检查
const foo: unknown = (params: unknown): unknown => {
    return null;
}
// not working -> the typescript compiler says:
// This expression is not callable.
// Type '{}' has no call signatures.
foo('werwq');
if (typeof foo === "function") {
    foo('werwq');
}
// or even
switch (typeof foo) {
    case "function":
        foo("a");
}