javascript typescript可以导出函数吗?

30byixjq  于 2023-01-16  发布在  Java
关注(0)|答案(5)|浏览(180)

可以从一个typescript模块导出一个简单的函数吗?
这不是为我编译的。

module SayHi {
    export function() {
    console.log("Hi");
  }
}
new SayHi();

This workitem似乎在暗示你不能,但你没有直截了当地说出来。这不可能吗?

ldfqzlk8

ldfqzlk81#

很难说在这个例子中你要做什么。exports =是关于从 * external * 模块导出的,但是你链接的代码样本是一个 * internal * 模块。
经验法则:如果你写module foo { ... },你写的是一个内部模块;如果你在一个文件的顶层写export something something,你就写了一个外部模块,你很少会在顶层写export module foo(因为那样你就会双重嵌套这个名字),更少会在一个有顶层导出的文件中写module foo(因为foo在外部是不可见的)。
下面的事情是有意义的(每个场景由一条水平线描述):

// An internal module named SayHi with an exported function 'foo'
module SayHi {
    export function foo() {
       console.log("Hi");
    }

    export class bar { }
}

// N.B. this line could be in another file that has a
// <reference> tag to the file that has 'module SayHi' in it
SayHi.foo();
var b = new SayHi.bar();
    • 文件1.ts**
// This *file* is an external module because it has a top-level 'export'
export function foo() {
    console.log('hi');
}

export class bar { }
    • 文件2.ts**
// This file is also an external module because it has an 'import' declaration
import f1 = module('file1');
f1.foo();
var b = new f1.bar();
    • 文件1.ts**
// This will only work in 0.9.0+. This file is an external
// module because it has a top-level 'export'
function f() { }
function g() { }
export = { alpha: f, beta: g };
    • 文件2.ts**
// This file is also an external module because it has an 'import' declaration
import f1 = require('file1');
f1.alpha(); // invokes f
f1.beta(); // invokes g
mwg9r5ms

mwg9r5ms2#

直接回答你的问题的标题,因为这首先出现在谷歌:

是,TypeScript可以导出函数!

下面是直接引自TS文档的一段话:
通过添加export关键字,可以导出任何声明(如变量、函数、类、类型别名或接口)。
Reference Link

qqrboqgw

qqrboqgw3#

如果你在Angular 上使用这个,那么通过一个命名的导出来导出一个函数。

function someFunc(){}

export { someFunc as someFuncName }

否则,Angular将抱怨对象不是函数。
编辑:我现在用的是Angular 11,不再需要了,所以export function someFunc(){ ...}就足够了

3xiyfsfu

3xiyfsfu4#

在我的例子中,我是这样做的:

module SayHi {
    export default () => { console.log("Hi"); }
 }
 new SayHi();
yquaqz18

yquaqz185#

您还可以将from关键字与import一起使用,并直接析构导出的对象。
file1.ts

export const CARS_QUERY = `
    {
      getAllCars {
        model,
        make,
        picture
      }
    }
    `;

file2.ts

import { CARS_QUERY } from "file1.ts";

相关问题