Typescript 如何使模块级函数不是只读的?

Typescript 如何使模块级函数不是只读的?,typescript,unit-testing,dependency-injection,readonly,monkeypatching,Typescript,Unit Testing,Dependency Injection,Readonly,Monkeypatching,假设您有一个如下所示的Typescript模块: // mymodule.ts export function aFunction () { console.log('Howdie Doody'); } // End of module 如果将其导入第二个模块,则无法重新分配a函数的功能。也就是说,如果我这样做: // secondModule.ts import * as firstModule from 'mymodule.ts`; firstModule.aFunctio

假设您有一个如下所示的Typescript模块:

// mymodule.ts

export function aFunction () {
    console.log('Howdie Doody');
}

// End of module
如果将其导入第二个模块,则无法重新分配
a函数的功能。也就是说,如果我这样做:

// secondModule.ts

import * as firstModule from 'mymodule.ts`;

firstModule.aFunction = () => { console.log('New message!') } 

// "Cannot assign to 'aFunction' because it is a read-only property.ts(2540)
如何使
a函数
不为只读,以便重新分配它

我想这样做,以便轻松测试使用
a函数的函数

据我所知,es6导入设计为只读,您必须使用其他模式动态更改
a功能

与CommonJS不同,导入是导出值的视图。换句话说,每次导入都是与导出数据的实时连接导入是只读的

非限定导入(从“foo”导入x)类似于const声明的变量。 模块对象foo的属性(从“foo”导入*作为foo)与冻结对象的属性类似


@戴修正了密码。删除
const
并不能解决问题,尽管
export-affunction()
无效-它应该是
export-function-affunction(){
export-affunction=function(){
,或者
export-affunction=()=>{
@Dai已编辑。但问题仍然存在