打字稿给我变量错误,并且还在编译 javascript 不知道的代码

Typescript giving me errors with variables, and is also compiling code that javascript does not know about

我正在使用打字稿,但我无法 运行 我的代码。 javascript 非常容易制作的东西让我 运行 转了很多圈子。

我正在使用 youtube API,并通过脚本标签进行引用。代码工作正常是 javascript,但是打字稿不允许我编译代码,因为它说有一个未定义的变量。 index.html

    <script src="/liveRoom/src/framework/vue.js"></script>
    <script src="/socket.io/socket.io.js"></script>
    <script src="https://www.youtube.com/iframe_api"></script>
    <script src="/liveRoom/src/app.js"></script>

app.js

import Vue from 'vue';
const socket : any = io();

function onYoutubeIFrameAPIReady() : void {
    let player : object = new YT.Player('player', { //YT is undefined apparently
        width: '640',
        height: '390',
        videoID: 'null',
        events: {
            'onStateChange': onPlayerStateChange
        }

    });
}
function onPlayerStateChange() {

}

socket.on('videoID', function (videoID : string) : void {
    console.log('the id is: ' + videoID);
    var app = new Vue({
        el: '#vID',
        data: {
            vID: videoID
        }
    });

});
console.log('asas');

如果这还不够混乱,即使我删除了这个 youtube API,并尝试创建我自己的系统,它甚至不会让我使用 vue,因为当我导入它时,它会发送这个到我的 JS 文件:


exports.__esModule = true;
var vue_1 = require("vue");

我从没听说过出口。在 javascript 中,显然两者都没有 javascript!这就是为什么即使我决定只使用 vue 也会收到此错误的原因:

Uncaught ReferenceError: exports is not defined
    at app.js:2

Typescript 应该可以节省我的时间,但此时我可能会完成我的项目,而不是刚刚开始。

您遇到的问题是 typescript 无法访问 vue 的类型。这是因为您使用脚本标记 (??) 导入它,这不是 Web 开发的典型方式。

您很可能应该使用 Webpack 等进行设置,或者,如果您不想花时间研究如何配置它,请使用像 Vue CLI 这样的零配置工具。

如果你不想这样做,你可以尝试在你的打字稿项目目录中使用 npm install vue,但要确保它与你通过脚本导入的 vue 版本相同标签。祝你好运!