架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 230|回复: 0

[TypeScript] TypeScript:类型“HTMLElement”上不存在属性“value”

[复制链接]
跳转到指定楼层
楼主
发表于 2019-5-27 14:06:54
zu
html看起来如下:

  1. <html>
  2.     <head>
  3.     </head>
  4.     <body>
  5.         <p id="greet"></p>
  6.         <form>
  7.             <input id="name" type="text" name="name" value="" onkeyup="greet('name')" />
  8.         </form>
  9.     </body>
  10.     <script src="greeter.js"></script>
  11. </html>
复制代码
和greeter.ts文件:

  1. function greeter(person)
  2. {
  3.     return "Hello, " + person;
  4. }

  5. function greet(elementId)
  6. {
  7.     var inputValue = document.getElementById(elementId).value;

  8.     if (inputValue.trim() == "")
  9.         inputValue = "World";

  10.     document.getElementById("greet").innerText = greeter(inputValue);
  11. }
复制代码
当我用tsc编译我得到以下“错误”:

/home/bjarkef/sandbox/greeter.ts(8,53):属性’value’不存在类型’HTMLElement’的值,

然而,编译器输出一个javascript文件,这在chrome中工作得很好。

我怎么会得到这个错误?我该如何解决呢?

另外,在哪里可以查找哪些属性在“HTMLElement”根据typescript有效?

请注意,我对JavaScript和打字稿非常新,所以我可能会缺少一些明显的东西。


基于Tomasz Nurkiewiczs的回答,“问题”是,typescript是类型安全的。 :)所以document.getElementById()返回的类型HTMLElement不包含value属性。但是,HTMLInputElement子类型包含value属性。
所以一个解决方案是将getElementById()的结果转换为HTMLInputElement,如下所示:


  1. var inputValue = (<HTMLInputElement>document.getElementById(elementId)).value;
复制代码
<>是打字稿中的铸造操作符。

从上面的行生成的javascript看起来像这样:

  1. inputValue = (document.getElementById(elementId)).value;
复制代码
即不包含类型信息。




上一篇:《容器云运维实战:Docker与Kubernetes集群》黄靖钧
下一篇:《从无到有构建大型电商微服务亿级架构》1-3阶段《龙果
帖子永久地址: 

架构师_程序员 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与架构师_程序员享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和架构师_程序员的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、架构师_程序员管理员和版主有权不事先通知发贴者而删除本文

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2019-7-17 14:19

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表