【问题标题】:The property 'xyz' does not exist on value of [imported] type 'xyz' in TypescriptTypescript 中 [imported] 类型“xyz”的值不存在属性“xyz”
【发布时间】:2015-12-28 09:59:37
【问题描述】:

我在 typescript 中访问导入的 nodejs 模块的函数,编译器会为每个方法调用或属性访问发出给定的错误。这是我的声明:

 import imageProc = module('imageProc');

其中imageProc 是编译后的 C++ 节点模块,没有打字稿定义。

这是我的电话:

 var result:NodeBuffer = imageProc.blur(input, 5, 15, 8);

有没有办法:

  1. 强烈键入 imageProc var 并定义它提供的方法,或者
  2. 禁用 imageProc var 的错误

编译工作正常,但是所述错误会填充错误日志,从而难以将合法错误与误报区分开来。

我将 VS 2012 与 Web Essential 2012 和 TypeScript 0.9.0.1 一起使用。

【问题讨论】:

  • 到目前为止,所有其他“重复”问题只能通过强输入方法/道具来解决错误。这很困难,因为我不知道如何对导入的 C++ 模块进行强类型化,不知道如何将导入的模块标记为“动态”,也不知道如何禁用特定 var 的错误。

标签: javascript node.js visual-studio-2012 typescript


【解决方案1】:

如果可以的话,你应该做的第一件事就是更新你的 TypeScript 包,因为 0.9 已经过时了。


不用太复杂,将imageProc 定义为any 将使TS 忽略该类型。

var imageProc: any = require('imageProc');

另一种方法是创建占位符定义文件。

创建一个名为imageProc.d.ts 的文件:

declare var imageProc: any;
declare module "imageProc" {
    export = imageProc;
}

然后您将其导入为:

import imageProc = require('imageProc');

或者使用 ES6 语法,例如:

import * as imageProc from 'imageProc';

【讨论】:

  • 不适用于 TypeScript 0.9。我不能在同一行上使用“var”和“require”。我需要使用“import”关键字,
  • 我用0.9.0.1 再次测试了它,它对我有用。它给你什么错误?
猜你喜欢
  • 2018-01-25
  • 2019-02-14
  • 2019-02-18
  • 2019-12-13
  • 2017-11-03
  • 2023-03-20
  • 2013-04-23
  • 2019-02-13
相关资源
最近更新 更多