我正在将一个JS函数实现为typescript,它在JS上工作正常,但在TS上,我得到:
[ts]找不到名称'PasscodeAuth'。你是说'passcodeAuth'吗?
function passcodeAuth() {
return PasscodeAuth.isSupported()
.then(() => {
return PasscodeAuth.authenticate()
})
.then(success => {
AlertIOS.alert('Authenticated Successfully');
})
.catch(error => {
console.log(error)
AlertIOS.alert(error.message);
});
}
所以不是导入,也不是在任何地方定义,但它适用于JS,那么如何让它可以被TS识别呢? 在JS上,我可以将我的参数命名为JS上的任何单词,它将具有isSupported和authenticate,即使它现在是一个真正的参数?
谢谢!
答案 0 :(得分:3)
暂时不存在if PasscodeAuth
实际存在的问题,您可以使用declare
语句通知typecript。以你的例子:
// Put this at the root level of the file that uses PasscodeAuth
declare const PasscodeAuth: any;
这会将PasscodeAuth
声明为类型为any
的变量。然后,您可以在文件中使用它而不会出现与该变量相关的错误,但由于它被键入为any
,因此您无法从中获得任何类型安全性。如果您碰巧知道它的类型,则可以指定更具体的类型而不是any
。
declare
语句只是一种类型注释,因此该行不会对发出的javascript代码产生任何影响。您提到您的代码已经按原样运行,尽管存在打字稿错误,因此声明听起来就像您需要的那样。