将JS函数实现为typescript

时间:2018-04-04 02:11:52

标签: javascript typescript

我正在将一个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,即使它现在是一个真正的参数?

谢谢!

1 个答案:

答案 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代码产生任何影响。您提到您的代码已经按原样运行,尽管存在打字稿错误,因此声明听起来就像您需要的那样。