为什么我们在打字稿中使用HTMLInputElement?

时间:2018-09-14 06:05:42

标签: javascript typescript

为什么要使用:

(document.getElementById("ipv") as HTMLInputElement).value;

代替:

document.getElementById("ipv").value;

2 个答案:

答案 0 :(得分:6)

df3 = (pd.concat([df1.set_index('SN'), df2.set_index('SN')], axis=1, keys=('x', 'y')).T.fillna(0)) #flatten MultiIndex df3.index = [f'{j}_{i}' for i, j in df3.index] print (df3) SN 456123 789456 123789 A_x 10.0 15.0 16.0 B_x 23.0 45.0 62.0 C_x 48.0 98.0 55.0 A_y 10.0 15.0 68.0 B_y 19.0 45.0 77.0 C_y 48.0 0.0 55.0 将无法返回特定的元素类型,因为它事先不知道该元素的类型,因此您需要在结果之后将结果强制转换为HTMLInputElement,以便{可以识别该类的{1}}属性。

答案 1 :(得分:4)

函数getElementById返回类型为HTMLElement的对象。

来自lib.dom.d.ts:

 /**
 * Returns a reference to the first object with the specified value of the ID or NAME attribute.
 * @param elementId String that specifies the ID value. Case-insensitive.
 */
getElementById(elementId: string): HTMLElement | null;

HTMLElement类型是DOM其他标记类型的基本类型。 例如,类型HTMLInputElement扩展了HTMLElement并具有类型value没有的属性HTMLElement

来自lib.dom.d.ts:

interface HTMLInputElement extends HTMLElement {
...
/**
 * Returns the value of the data at the cursor's current position.
 */
value: string;
...

由于HTMLInputElement扩展了HTMLElement,因此接下来的几行可以编译:

const inputTag = document.getElementById('name-input') as HTMLInputElement;
const value = inputTag.value;