웹사이트 검색

node.js - typescript는 'typeof object' 타입에 존재하지 않습니다


저는 최근에 타입스크립트를 시작했습니다,

저는 제 자바스크립트 코드를 타입스크립트로 옮기고 있었습니다. 제 JS 코드에는 이런 것이 있었습니다

export const envVar = {
    SOCIAL_URL: false,
    BASE_CONFIG_URL: '', //we change it based on the request
    BASE_CONFIG_CLIENT_WEB_URL: base_config.client_url || 'http://localhost:3000',
    DB_HOST: db_settings.db_host || 'localhost',
    DB_USER: db_settings.db_user || 'root',
    APP_URL: base_config.app_url || 'blle://',
    DB_PASSWORD: db_settings.db_password || '',
    DB_DATABASE: db_settings.db_database || 'blale',
    DB_CONNECTION_NAME: db_settings.connection_name || '',
    FIREBASE_DATABASE_URL: db_settings.firebase_datbase_url,
    FACEBOOK_APP_ID: facebook.app_id || '',
    FACEBOOK_APP_SECRET: facebook.app_secret || '',
    FACEBOOK_REDIRECT_URL_SOCIAL: facebook.redirect_url_social || '',
    FACEBOOK_REDIRECT_URL_AUTH: facebook.redirect_url_auth || '',
    FACEBOOK_REDIRECT_URL: function() {
        return this.SOCIAL_URL ? this.FACEBOOK_REDIRECT_URL_SOCIAL : this.FACEBOOK_REDIRECT_URL_AUTH
    },
    TWITTER_CONSUMER_KEY: twitter.api_key || '',
    TWITTER_REDIRECT_URL_AUTH: twitter.redirect_url_auth || '',
    TWITTER_REDIRECT_URL_SOCIAL: twitter.redirect_url_social || '',
    TWITTER_APP_SECRET: twitter.app_secret_key || '',
    TWITTER_REDIRECT_URL: function() {
        return this.SOCIAL_URL ? this.TWITTER_REDIRECT_URL_SOCIAL : this.TWITTER_REDIRECT_URL_AUTH
    },
    JWT_SESSION_DURATION: jwt_config.session_duration || '7d',
    JWT_ISSUER: jwt_config.issuer || 'blle',
    JWT_SECRET: jwt_config.secret || '933dnz82'
}

module.exports에서 export const로 이것을 옮겼습니다. 이제 다른 .ts 파일에서 어떻게 사용할 수 있을까요? 처음에는 이렇게 했습니다

import * as envVar  from "./../config"

const { JWT_SECRET, JWT_ISSUER, JWT_SESSION_DURATION } = envVar

하지만 이것은 다음과 같은 오류를 발생시키고 있습니다

타입 'typeof'에는 속성 'JWT_SESSION_DURATION'가 존재하지 않습니다

답변 #1

당신이 명명된 내보내기를 하고 있기 때문에, 당신의 임포트는 envVar를 속성 중 하나로 포함하는 객체를 받게 됩니다.

그래서 당신은 다음을 할 수 있습니다.

import { envVar }  from "./../config"

또는

import * as envVar  from "./../config"

const { JWT_SECRET, JWT_ISSUER, JWT_SESSION_DURATION } = envVar.envVar

기존 가져오기를 사용하려면, 명명된 내보내기를 기본 내보내기로 변경해야 합니다.

const envVar = {....};
export default envVar;

답변 #2

// GlobalConfig .ts
export namespace GlobalConfig {
    export var JWT_SESSION_DURATION = { myValue: "4" }
    export const JWT_SECRET = "asasasasas"
} 

그리고 나서 이렇게 다른 파일에서 이것을 사용할 수 있습니다. 이것이 할 수 있는 여러 방법 중 하나라는 점에 주의하세요.

//MyCode.ts
import { GlobalConfig } from "./GlobalConfig";

export class SomeComponent {
    current_jwt = "";

    constructor() {
        // some init code
        this.current_jwt = GlobalConfig.JWT_SESSION_DURATION.myValue;
    }

    ngOnInit() {
        // something
        console.log(this.current_jwt);
        console.log(GlobalConfig.JWT_SECRET);
    }

}

관련기사