TypeScript文件.ts中的JavaScript代码不工作

TypeScript文件.ts中的JavaScript代码不工作,javascript,visual-studio,highcharts,typescript,requirejs,Javascript,Visual Studio,Highcharts,Typescript,Requirejs,我找到了我问题的可能答案: 我正在使用VisualStudio和TypeScript插件进行一个web项目。在下面的帖子中,我找到了这个答案: 没有任何有效的JavaScript代码是有效的TypeScript请参见下面的示例 var-testVar=4;testVar=“asdf”类型脚本提供以下内容 错误:无法将字符串转换为数字。让它在 TypeScript添加“:any”如下所示 var-testVar:any=4;testVar=“asdf”发生这种情况是因为TypeScript 注意

我找到了我问题的可能答案:

我正在使用VisualStudio和TypeScript插件进行一个web项目。在下面的帖子中,我找到了这个答案:

没有任何有效的JavaScript代码是有效的TypeScript请参见下面的示例

var-testVar=4;testVar=“asdf”

类型脚本提供以下内容 错误:无法将字符串转换为数字。让它在 TypeScript添加“:any”如下所示

var-testVar:any=4;testVar=“asdf”


发生这种情况是因为TypeScript 注意到testVar被声明,并且在声明中它被分配了一个 所以它决定它应该保持一个数字

我试着用海图。如果我将代码保存在Javascript文件中,我不会得到任何错误。但是,当我将代码保存在Typescript文件中时,出现了一个错误:

找不到名称“HighCharts”

在这里您可以看到我的代码的相关部分:

// Put definitions of highcharts, highstocks below this line
// Example 1 Chart
var initializeChart1 = function () {
    require(['jquery', 'highcharts', 'highchartsMore', 'highchartsExporting'], function ($) {

        $("#myChart").highcharts({

            chart: {
                type: 'spline',
                backgroundColor: '#ECECEC',

// ------THIS GIVES AN ERROR, BUT WORKING WHEN SAVED AS .JS file
                animation: Highcharts.svg, // don't animate in old IE
// -------------------------

...
我想将我的JavaScript代码保存在TS文件中的原因很简单:我目前正在学习TypeScript,我将JavaScript和TypeScript版本或相同的代码保存在同一个文件中。根据TypeScript是否完整/正常工作,我会取消注释它并注释JavaScript

我的问题是:

  • 为什么会出现此错误?
  • 是否可以使用任何JavaScript代码 TS文件内部?

  • 是的,您可以在typescript文件中使用js代码,但编译器需要了解您使用的对象和库。 您有两个选项来编译此对象。要么为库添加.d.ts文件,要么愚弄编译器,您可以这样声明Highcharts对象

    declare var Highcharts: any;
    var initializeChart1 = function () {
        require(['jquery', 'highcharts', 'highchartsMore', 'highchartsExporting'], function ($) {
    
            $("#myChart").highcharts({
    
                chart: {
                    type: 'spline',
                    backgroundColor: '#ECECEC',
                    animation: Highcharts.svg, // don't animate in old IE
    

    您是否添加了对d.ts文件的引用?我通过在require(['jquery','Highcharts','highchartsMore','highchartsporting',],function($,Highcharts)中添加“Highcharts”引用使其正常工作{.但是我仍然不明白为什么这个代码在保存到.js文件时没有这个引用,而在保存到.ts文件时却不工作…这个引用只是为了帮助您以强类型的方式编写代码。而且有必要键入脚本来告诉您可能的运行时错误。其中一个最大的好处是使IDE能够提供更丰富的环境,用于在键入代码时发现常见错误。请检查此答案,以便对类型脚本有一个简单的了解,该脚本仍然需要使用
    requirejs
    来执行此操作