首页 > 解决方案 > 调用函数TS时如何更新属性值

问题描述

大家好,我想把一段JS代码改成TS代码。

JS

function newState(name){
      var state ={
        name : name,
        age : 0
      } 
      return state
    }

function initStates() {  
 this.JamesState = newState('James')
 this.RoyState = newState('Roy');
 this.RoyState.age = 20;
}

TS

newPRYState(name){
  let state = {
      name : name,
      age : 0
  }
  return state
}

initStates() { 
   this.JamesState = newState('James')
   this.RoyState = newState('Roy');
   this.RoyState.age = 20; 
} 

错误:键入“对象”没有属性年龄

我想要的结果是姓名:詹姆斯年龄:0

姓名:罗伊年龄:20

请告诉我如何解决这个问题

标签: javascripttypescript

解决方案


在使用 TS 时,您需要为所有变量指定类型。定义接口并使用变量设置此类型。

interface IState {
  name: string;
  age: number;
}

newPRYState(name: string): IState {
  let state: IState = {
      name : name,
      age : 0
  }
  return state;
}

initStates() { 
   this.JamesState: IState = newState('James')
   this.RoyState: IState = newState('Roy');
   this.RoyState.age = 20; 
} 

推荐阅读