我正在使用typescript,并试图创建一个脚本,当文本输入到输入框中时,该脚本将更新p元素。
<html>
<head>
</head>
<body>
<p id="greet"></p>
<form>
<input id="name" type="text" name="name" value="" onkeyup="greet('name')" />
</form>
</body>
<script src="greeter.js"></script>
</html>
function greeter(person)
{
return "Hello, " + person;
}
function greet(elementId)
{
var inputValue = document.getElementById(elementId).value;
if (inputValue.trim() == "")
inputValue = "World";
document.getElementById("greet").innerText = greeter(inputValue);
}
然而,编译器确实输出了一个javascript文件,这在Chrome中工作得很好。
我怎么会有这个错误?那我该怎么修呢?
另外,根据TypeScript,在哪里可以查找'HTMLElement'
上哪些属性是有效的?
请注意,我对javascript和typescript非常陌生,所以我可能会遗漏一些显而易见的东西。:)
根据Tomasz Nurkiewicz的回答,“问题”在于typescript是TypeSafe。:)因此Document.GetElementById()
返回类型HTMLElement
,该类型不包含Value
属性。但是,子类型HTMLinPutElement
包含Value
属性。
因此,一个解决方案是将GetElementById()
的结果强制转换为HTMLinPutElement
,如下所示:
var inputValue = (<HTMLInputElement>document.getElementById(elementId)).value;
<>
是TypeScript中的强制转换运算符。请参阅问题typescript:casting htmlelement。
上面一行生成的javascript如下所示:
inputValue = (document.getElementById(elementId)).value;
即不包含类型信息。
我在做一个个人项目,在完成firebase的注册和登录表单时遇到了一些问题。我使用的是Vuejs和TS,它给我带来了这个错误。将电子邮件另存为txtEmail的部分。值和txtPassword。值将删除错误。以下是一个片段:
我使用的是完全修补过的Visual Studio 2013。我正在尝试使用JQuery、JQueryUI和JSRender。我也在尝试使用打字。在ts文件中,我得到如下错误: 类型“{}”上不存在属性“fade div”。
我试图在登录过程后获得连接的用户模型, 首先,在CanActivate guard检查了带有用户JSON对象的本地存储并发现该对象为空之后,用户将重定向到“/login”URL 然后用户登录并重定向回根URL“/”,在连接过程中我使用AuthService,它将从服务器返回的用户对象保存在用户模型中 这是我的守卫:
升级到Angular 6.0和Rxjs到6.0后,我收到以下编译错误:
获取错误:(类型窗口中不存在属性“MktoForms2”