在VS2013中,当tsc使用代码1退出时,构建停止。但在VS2012中却不是这样。
如何在忽略tsc.exe错误的情况下运行我的解决方案?
我得到许多属性'x'不存在的值类型'y'错误,我想忽略使用javascript函数时。
在VS2013中,当tsc使用代码1退出时,构建停止。但在VS2012中却不是这样。
如何在忽略tsc.exe错误的情况下运行我的解决方案?
我得到许多属性'x'不存在的值类型'y'错误,我想忽略使用javascript函数时。
当前回答
在Angular2中有一个问题,我正在使用本地存储来保存一些东西,它不允许我这样做。
解决方案:
我有localStorage。city ->错误->属性“city”在“Storage”类型上不存在。
如何解决:
localStorage(城市的) (localStorage) .city (localStorage as any).city
其他回答
你也可以使用下面的技巧:
Y.x = "some custom property"//给出typescript错误
Y ["x"] = "some custom property"//没有错误
注意,要访问x并且不再得到typescript错误,你需要像y["x"]那样写它,而不是y.x。所以从这个角度来看,其他选项更好。
在我的特定项目中,我不能让它工作,并使用声明var $;不是一个干净/推荐的解决方案,它不识别JQuery变量,但我使用后没有错误(必须为我的自动构建成功)。
我知道这个问题已经关闭了,但我发现它正在搜索相同的TypeScriptException,也许其他人正在搜索这个问题。 问题在于缺少TypeScript类型:
var coordinates = outerElement[0].getBBox();
属性“getBBox”在类型为“HTMLElement”的值上不存在。
var outerHtmlElement: any = outerElement[0];
var coordinates = outerHtmlElement.getBBox();
编辑,2016年底
从TypeScript 1.6开始,首选的强制转换操作符是as,所以这些行可以压缩成:
let coordinates = (outerElement[0] as any).getBBox();
其他的解决方案
当然,如果你想把它做对,这有时是过度的,你可以:
创建自己的接口,简单地扩展HTMLElement 引入自己的类型,它扩展了HTMLElement
快速而简单的解决方案是显式强制转换为any
(y as any).x
“优点”是,强制转换是显式的,即使设置了noImplicitAny标志,也可以进行编译。
正确的解决方案是更新类型定义文件。
请注意,当您将变量强制转换为任意类型时,您将选择不进行该变量的类型检查。
因为我在免责模式,双强制转换通过任何结合一个新的界面,可以是有用的情况下
您不希望更新损坏的类型文件 而且/或者你是猴子补丁
然而,您仍然需要某种形式的输入。
假设你想用一个类型为number的新属性x来修补类型为originaldef的y实例的定义:
const y: OriginalDef = ...
interface DefWithNewProperties extends OriginalDef {
x: number
}
const patched = y as any as DefWithNewProperties
patched.x = .... //will compile
在Angular2中有一个问题,我正在使用本地存储来保存一些东西,它不允许我这样做。
解决方案:
我有localStorage。city ->错误->属性“city”在“Storage”类型上不存在。
如何解决:
localStorage(城市的) (localStorage) .city (localStorage as any).city