首页 > 解决方案 > 我们可以在外部 .ts 文件中声明我的类中所需的所有变量吗?

问题描述

所以我正在开发一个 Ionic 应用程序,并且在我的类(WelcomeAunthenticatedUser.ts)中有很多变量声明,这些变量在我的类函数中使用。但是我试图在外部 .ts 文件中声明所有这些变量,然后导出该文件并将其导入我的类中。这是有什么办法吗?

这是我想导出到我的班级的 Variables.ts 文件。


export var Variables: {
    currentUser: string
    scannedCode: string
    currentAccessToken: string
    imageUrl: string
    product: number
    cartCode: number
    productQuantity: 1
    //barcodeDataFields Vars
        barcodeDataFieldsName: string
        barcodeDataFieldsProductCode: string
        barcodeDataFieldsDescription: string
        barcodeDataFieldsImage: string
        barcodeDataFieldsPrice: string

    //productCart Vars
        Quantity: number
        Status: string

    // userCart Vars
        userCartName: string
        userCartCode: number
        userCartProductCode: number
        userCartPrice: number
        userCartTotalPrice: number
        userCartQuantity: number
        userCartEntryNumber: number
        userCartVisibility: boolean

    showButton: boolean
    quantity: number
}

我将它导入我的欢迎课:

import { Variables } from './../../constants/variables'
import { Paths } from './../../constants/constants'
import { ToastController } from '@ionic/angular';
import { TranslateService } from '@ngx-translate/core';
import { AlertController } from '@ionic/angular';

@Component({
  selector: 'app-welcome-authenticated-user',
  templateUrl: './welcome-authenticated-user.page.html',
  styleUrls: ['./welcome-authenticated-user.page.scss'],
})

export class WelcomeAuthenticatedUserPage implements OnInit {
  productQuantity = 1;
  ngOnInit() {
     Variables.currentUser = this.localStorage.retrieve(LocalStorage.USERNAME);
     Variables.currentAccessToken = this.localStorage.retrieve(LocalStorage.ACCESS_TOKEN);
     Variables.cartCode = this.localStorage.retrieve(LocalStorage.CART_CODE);
     Variables.showButton = false;
  }

当我运行它时,它会显示如下错误:

Toast Called
core.js:6014 ERROR TypeError: Cannot read property 'cartCode' of undefined
    at WelcomeAuthenticatedUserPage.ionViewWillEnter (welcome-authenticated-user.page.ts:32)
    at HTMLElement.handler (ionic-angular.js:2075)
    at ZoneDelegate.invokeTask (zone-evergreen.js:391)
    at Object.onInvokeTask (core.js:39680)
    at ZoneDelegate.invokeTask (zone-evergreen.js:390)
    at Zone.runTask (zone-evergreen.js:168)
    at ZoneTask.invokeTask [as invoke] (zone-evergreen.js:465)
    at invokeTask (zone-evergreen.js:1603)
    at HTMLElement.globalZoneAwareCallback (zone-evergreen.js:1629)
    at lifecycle (index-157155ee.js:148)

core.js:6014 ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'currentUser' of undefined
TypeError: Cannot read property 'currentUser' of undefined
    at WelcomeAuthenticatedUserPage.<anonymous> (welcome-authenticated-user.page.ts:50)
    at Generator.next (<anonymous>)

我有什么办法可以做到这一点?

标签: javascriptangulartypescriptionic-frameworkecmascript-6

解决方案


看起来你还没有初始化Variables常量。尝试以下操作:

export const Variables: {
  currentUser: string
  scannedCode: string
  currentAccessToken: string
  imageUrl: string
  product: number
  cartCode: number
  productQuantity: 1
  //barcodeDataFields Vars
  barcodeDataFieldsName: string
  barcodeDataFieldsProductCode: string
  barcodeDataFieldsDescription: string
  barcodeDataFieldsImage: string
  barcodeDataFieldsPrice: string

  //productCart Vars
  Quantity: number
  Status: string

  // userCart Vars
  userCartName: string
  userCartCode: number
  userCartProductCode: number
  userCartPrice: number
  userCartTotalPrice: number
  userCartQuantity: number
  userCartEntryNumber: number
  userCartVisibility: boolean

  showButton: boolean
  quantity: number
} = {};

推荐阅读