请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请老师帮看下问题

配置文件:configData.ts

export interface configObject {
  databaseName: string;
  username: string;
  password: string;
  host: string;
  port: string;
  [key: string]: any;
}

export const configData: configObject = {
  databaseName: "sales",
  username: "username",
  password: "pwd",
  host: "192.1.1.1",
  port: "8888",
};

类文件:Config.ts

import { configData, configObject } from "./configData";

class Configs {
  static cname: string = "配置参数";
  static cself: Configs = new Configs();
  public data: configObject;

  constructor() {
    console.log("Configs类-构造器:");
    this.data = JSON.parse(JSON.stringify(configData));
    const host = this.getItem("host");
    console.log("host:", host);
  }

  public getItem(value: string) {
    if (value) {
      return this.data[value];
    }
    return undefined;
  }

  public setItem(name: string, value: string) {
    if (name && this.data[name]) {
      this.data[name] = value;
    }
    return this.data;
  }
  //重置
  public rest() {
    this.data = JSON.parse(JSON.stringify(configData));
  }
}

Configs.cself.setItem("username", "tom");
console.log("name1:", Configs.cself.getItem("username")); //name1: tom
Configs.cself.rest();
console.log("name2:", Configs.cself.getItem("username")); //name2: username
export {}; 

js下可以覆盖对象,原对象地址也可以保留。 但ts不允许覆盖,用了JSON.parse(JSON.stringify(xxx)) 来解决。但不知是否有缺陷,望老师告知更好的方式

let obj = { a: 1, b: 2 };     
let obj2 = obj;   
obj = { ax: "aa", bx: "bb" }; //覆盖对象 JS可行,ts会报错 

是不是我不应该用这样的逻辑来写?

正在回答

1回答

在初次let obj = { a: 1, b: 2 }的时候,类型推断已经定义obj的了类型,覆盖的话在定义obj的时候就要用混合类型进行注解了,另外一般定义引用类型的变量直接覆盖的场景比较少,我定义引用类型的变量都是直接const声明。

0 回复 有任何疑惑可以回复我~
  • 1. 这是作业,为了给所有同学都能有思考和做作业的机会,课后作业答案不在问答区提供答案,通过群联系老师,我发你答案。
    2.慕移动6312711 同学说的“在初次let obj = { a: 1, b: 2 }的时候,类型推断已经定义obj的了类型,”这句话正确,    和下面这个小例子道理一样
    let str = 'Abc'
    str = 3// 不能将类型“number”分配给类型“string”
    回复 有任何疑惑可以回复我~ 2022-03-09 22:49:46
  • 提问者 红帽哥布林 #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2022-03-10 15:45:11
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号