我正在尝试转换JavaScript代码
if (window.ifEdit.editIsDirty()) { }
进入Typescript。我得到了以下
var iframe = document.getElementById('ifEdit');
var iWindow = <HTMLIFrameElement>(iframe).contentWindow;
var _editIsDirty = iWindow.editIsDirty();
我在'contentWindow'和'editIsDirty'下得到红色曲线,说该类型上不存在方法/属性。 .ts不会编译为.js文件。
我已经搜索过,但找不到解决方案。
答案 0 :(得分:11)
对于contentWindow
部分,代码的问题在于转换是错误的,应该是:
var iWindow = (<HTMLIFrameElement> iframe).contentWindow;
对于editIsDirty
,它不是Window
的标准属性
如果它是在您运行javascript的环境中添加的内容,那么您需要声明它如下:
interface IfEdit {
editIsDirty(): boolean;
}
interface Window {
ifEdit: IfEdit;
}
var iframe = document.getElementById("ifEdit");
var iWindow = (<HTMLIFrameElement> iframe).contentWindow;
var _editIsDirty = iWindow.ifEdit.editIsDirty();
使用Playground中的代码。
答案 1 :(得分:0)
铸造将通过 as
。这确保 .contentWindow
是可访问的。
const iframe = document.getElementById('embed-player') as HTMLIFrameElement;
if (!iframe) {
// Handle case where iframe not found
return;
}
const contentWindow = iframe.contentWindow;
// Note: You will likely need more null handling for contentWindow's properties
console.log(contentWindow?.document);