我该如何解决“没有出口会员”

时间:2019-01-31 21:16:40

标签: typescript

创建我自己的函数,但是一旦我导入了在另一个文件中创建的模块,当我已经导出了该函数所在的类时,它将出错。

我已经尝试了很多类似的问题,但是似乎没有用……也许只是我的开发环境

chiFunctions.ts

    export class ChiFunctions {
            public Arrivederci() {
                    const time: moment().format('MMMM Do YYYY, h:mm:ss a');
                    let statements: string[] = ['good-night', 'Good Morning','Good-afternoon'];

                    if (time > '12:00:00 pm')
                            return statements[1];
                    else if (time < '12:00:00 pm')
                            return statements[2];
            }
    }

chiListener.ts

    import { Arrivederci } from 'utils/chiFunctions'; // Here is the error

应该发生什么

console.log(`${Arrivederci}`);

输出

Good-afternoon

1 个答案:

答案 0 :(得分:2)

您的代码有两个问题:

  • 您要导出的是类,而不是函数。
  • 您实际上并不是在调用函数。

您需要执行以下操作才能使当前代码正常工作:

import { ChiFunctions } from 'utils/chiFunctions';
const functions = new ChiFunctions();
console.log(`${functions.Arrivederci()}`);

您可以使用static method使其更加简洁,而无需创建ChiFunctions类的实例就可以调用它,但这仍然有些混乱。

尽管使用C#和Java这样的语言,所有内容都必须包装在类中,但是JavaScript / TypeScript中没有这种限制-您可以通过仅从chiFunctions文件中导出函数来删除很多样板:

export function Arrivederci() {
    const time: moment().format('MMMM Do YYYY, h:mm:ss a');
    let statements: string[] = ['good-night', 'Good Morning','Good-afternoon'];

    if (time > '12:00:00 pm')
        return statements[1];
    else if (time < '12:00:00 pm')
        return statements[2];
}

然后您可以这样做:

import { Arrivederci } from 'utils/chiFunctions';
console.log(`${Arrivederci()}`);

几乎完全是您的原始代码,只是固定了语法,以便调用该函数!