首页 > 解决方案 > 我将如何解决“没有导出的成员”

问题描述

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

我已经尝试了很多与我类似的问题,但它似乎不起作用......也许它只是我的开发环境

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

标签: typescript

解决方案


您的代码有两个问题:

  • 您正在导出类,而不是函数。
  • 您实际上并没有调用该函数。

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

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

您可以通过使用静态方法使其更简洁,无需创建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()}`);

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


推荐阅读