我在React中使用typescrip 3.4,并且尝试使用此代码加载Youtube Iframe API
const tag = document.createElement("script");
tag.src = "www.youtube.com/player_api";
const firstScriptTag = document.querySelector("script");
if (firstScriptTag != null) {
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
}
即使我正在检查变量是否为null,但由于TS编译器会抛出 Object可能为'null'错误
,因此React将拒绝编译。我还尝试过使用非空断言运算符(“!”),
firstScriptTag!.parentNode.insertBefore(tag, firstScriptTag);
问题仍然存在。
我知道可以通过在 tsconfig 文件中设置strict=false
来摆脱它,但是我想强迫自己编写高质量的代码。
谢谢!
答案 0 :(得分:1)
警告位于firstScriptTag.parentNode
上。您必须先检查firstScriptTag
和firstScriptTag.parentNode
,然后才能安全地在firstScriptTag.parentNode
上调用方法:
if (firstScriptTag && firstScriptTag.parentNode) {
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); // no error
}
希望有帮助。祝你好运。