为什么不';我不允许声明一个在typescript中实现的函数吗?

为什么不';我不允许声明一个在typescript中实现的函数吗?,typescript,Typescript,我用参数类型和函数的全局定义创建了一个.d.ts文件。 只要全局函数是用javascript编写的,这就可以正常工作 转换为typescript时,我引用了.d.ts文件来导入类型。 但是在编译时,它会抱怨函数同时被声明和实现,aka错误TS2384:重载签名必须是环境签名或非环境签名。 为什么我不能在声明中引用我的d.ts文件?/为什么不允许我声明在typescript中实现的函数 在旧的C语言中,可以将h文件与当前文件的声明一起包含,这通常非常有用 我应该将实现、接口和函数增量放在哪里,如何

我用参数类型和函数的全局定义创建了一个.d.ts文件。 只要全局函数是用javascript编写的,这就可以正常工作

转换为typescript时,我引用了.d.ts文件来导入类型。 但是在编译时,它会抱怨函数同时被声明和实现,aka
错误TS2384:重载签名必须是环境签名或非环境签名。

  • 为什么我不能在声明中引用我的d.ts文件?/为什么不允许我声明在typescript中实现的函数
  • 在旧的C语言中,可以将h文件与当前文件的声明一起包含,这通常非常有用

  • 我应该将实现、接口和函数增量放在哪里,如何在它们之间引用以避免错误?(如我目前所知,为什么在.ts和.d.ts文件中拆分它们是不正确的)
  • 制作了一个小型示例:

    // test.d.ts
    interface test_option {
        a: boolean;
    }
    
    declare function test(options: test_option): boolean;
    
    //test.ts
    /// 
    函数测试(选项:测试选项):布尔值{
    返回!选项;
    }
    
    //test2.ts
    /// 
    log(test({a:true}));
    
    事情就是这样。您可以为遗留JavaScript文件创建定义文件,也可以在typescript中实现它。无法为Typescript中实现的内容创建定义文件


    解决方案似乎很简单,只需将函数的签名移动到实现,就可以了

    事情就是这样。您可以为遗留JavaScript文件创建定义文件,也可以在typescript中实现它。无法为Typescript中实现的内容创建定义文件


    解决方案似乎很简单,只需将函数的签名移动到实现,就可以了

    不确定是否有理由创建d.ts,然后在typescript中实现它。您可以为javascript文件创建d.td。你不需要它来做。。。如果你想得到d.T,你仍然可以设置“声明”:true。在tsconfig中,编译器将为您创建自定义d.ts文件,但不确定您是否有理由创建d.ts,然后在typescript中实现它。您可以为javascript文件创建d.td。你不需要它来做。。。如果你想得到d.T,你仍然可以设置“声明”:true。在tsconfig so中,编译器将为您创建自定义d.ts文件,因为我有一个加载到所有页面的全局脚本,以及加载到特定页面的特定页面脚本,所以我希望能够从这两个文件运行全局函数。因为我有一个加载到所有页面的全局脚本,以及加载在特定页面上的特定页面脚本,我希望能够从这两个文件运行全局函数。
    // test.ts
    /// <reference path="test.d.ts" />
    
    function test(options: test_option): boolean {
        return !options.a;
    }
    
    // test2.ts
    /// <reference path="test.d.ts" />
    
    window.console.log(test({a: true}));