JavaScript Intellisense VScode [ts()]出现问题

时间:2019-09-10 08:55:47

标签: javascript visual-studio-code

你好!
我在vscode中遇到一个import cv2 as cv from django.conf import settings from django.db import models from imagekit.processors import ResizeToFit from imagekit.models import ImageSpecField def video_to_image(source, frame): vid_cap = cv.VideoCapture(settings.MEDIA_ROOT + source.__str__()) vid_cap.set(cv.CAP_PROP_POS_FRAMES, frame) success, image = vid_cap.read() vid_cap.release() return image class Post(models.Model): IMAGE = 'I' VIDEO = 'V' FILE_TYPES = [ (IMAGE, 'Image'), (VIDEO, 'Video') ] file_type = models.CharField(max_length=1, choices=FILE_TYPES) file = models.FileField(upload_to='post_images') thumbnail_frame = models.IntegerField(default=0) image_thumbnail = ImageSpecField(source='file', processors=[ResizeToFit(width=200, height=200)], format='JPEG', options={'quality': 60}) ts()的Intellisense问题。 当我输入以下行时:

JavaScript

我收到一个错误,指出在const input = document.querySelector("#input"); const button = document.querySelector("#button"); button.addEventListener("click", () => { console.log(input.value); }); 元素中找不到属性"value"

请建议我!

1 个答案:

答案 0 :(得分:1)

document.querySelector()默认情况下将返回Element类型,该类型没有value属性。您需要告诉TypeScript一种您希望查询选择器返回的更特定类型的元素,因为它不能仅从查询字符串中推论得出。

鉴于您希望查询选择器返回HTML输入元素,您可以使用const input = document.querySelector<HTMLInputElement>("#input");来缩小查询选择器的返回类型。此类型具有value属性,因此现在您可以使用input.value

更具体地说,document.querySelector是泛型函数,当某些东西(例如函数的返回类型)可以具有多个类型时,将使用泛型。您可以在TypeScript documentation中阅读有关泛型及其语法的更多信息。