javascript - 将 JS 函数实现为 typescript

标签 javascript typescript

我正在将一个 JS 函数实现到 typescript 中,它在 JS 上运行良好,但在 TS 上,我得到:

[ts] Cannot find name 'PasscodeAuth'. Did you mean '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 和身份验证,即使现在是一个真实的参数?

谢谢!

最佳答案

撇开 PasscodeAuth 是否实际存在的问题,您可以使用 declare 语句将其告知 typescript 。对于您的示例:

// Put this at the root level of the file that uses PasscodeAuth
declare const PasscodeAuth: any;

这会将 PasscodeAuth 声明为类型为 any 的变量。然后您可以在您的文件中使用它而不会出现与该变量相关的错误,但是由于它的类型是 any,因此您不会从中获得任何类型安全性。如果您碰巧知道它的类型,则可以指定更具体的类型而不是 any

declare 语句只是一个类型注释,因此该行实际上不会对发出的 javascript 代码产生任何影响。您提到您的代码已经按原样运行,尽管存在 typescript 错误,因此声明听起来正是您所需要的。

关于javascript - 将 JS 函数实现为 typescript ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49641686/

相关文章:

javascript - ng-repeat动态完成后的Angular JS回调

javascript - uglifyjs 抛出带有冒号的 punc()

angular - 在 Angular2 中使用父组件的模板

javascript - 属性 'length' 不存在于类型 ... mysql2 模块中的 OkPacket

javascript - Socket.io-client - TypeError : socket_io_client_1. 默认不是函数

angular - 如何在 Angular 2 中定义嵌套的子路由?

javascript - 获取鼠标光标下的 HTML 标签

javascript - 如何打开模态jquery并从表中获取单元格值?

javascript - 如何在安卓浏览器中制作滚动条

typescript - 错误的 "Operator ' != =' cannot be applied to types ' false' 和 'true' ."error?