当我使用的TypeScript定义文件缺少单个定义时,我该怎么办?

时间:2016-09-30 12:59:32

标签: javascript typescript

我正在为我的项目使用React类型定义。我注意到它忽略了array returned by the refs property中元素的焦点方法 - 所以我无法使this example起作用。基本上,编译器说:property 'focus' does not exist on type 'Component <any, any> | Element'。这是因为焦点存在于类型 HTMLElement 而不是元素上。定义文件应该将 refs 的返回类型指定为| HTMLElement或其他一些包含焦点方法的扩展接口(我不知道哪个,但不是那个&#39;不是我的问题的一点)。

我的问题是:我现在该怎么办?我被迫继续发展!

我知道我可以分叉定义文件并自己修补它但这似乎是我在TypeScript中不断提出的一个问题,并且想知道是否有一个不那么繁琐的解决方案,这意味着我可以快速移动。似乎我不得不在构建应用程序时不得不走出轨道,经常进行TypeScript修补!

1 个答案:

答案 0 :(得分:1)

快速而肮脏的解决方案是强制转换为any 选择退出类型检查,即

 onSubmitEditing={(event) => { 
    (this.refs.SecondInput as any).focus(); 
 }}

在DefinitelyTyped上提交拉取请求将是一个不错的举动......

注意:你可以变得更加成熟并且变得更加成熟。如果需要,使用&#34;双重投射到any&#34;

 type ProperRef = Component <any, any> | HTMLElement

 onSubmitEditing={(event) => { 
    const secondRef =  this.refs.SecondInput as any as ProperRef;
    secondRef.focus(); 
 }}