Javascript 调用函数TS时如何更新属性值

Javascript 调用函数TS时如何更新属性值,javascript,typescript,Javascript,Typescript,大家好,我想把一段JS代码改成TS代码 JS TS 错误:类型“object”没有属性期限 我希望结果是 姓名:詹姆斯 年龄:0 姓名:罗伊 年龄:20 请告诉我如何解决此问题在使用TS时,您需要为所有变量设置类型。定义接口并使用变量设置此类型 interface IState { name: string; age: number; } newPRYState(name: string): IState { let state: IState = { name : n

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

JS

TS

错误:类型“object”没有属性期限

我希望结果是 姓名:詹姆斯 年龄:0

姓名:罗伊 年龄:20


请告诉我如何解决此问题

在使用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; 
} 

使用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; 
} 

这不一定是真的。您无需定义接口即可使其工作。是的,您可以在不定义接口的情况下设置
any
。不过,拥有
接口是一种很好的做法。只要意识到我为已经定义的
thisRoyState.age设置了类型即可。Javascript是完全有效的typescript,您不必定义类型。这就是说,如果您计划不使用类型,您可能根本就不使用typescript。@MikeS。正确的。问题中的问题与类型有关,因为
newPRYState
方法的返回类型是一个对象,所以
this.JamesState
this.RoyState
的类型会自动设置为对象,因此问题会在编译中出现。这不一定是真的。您无需定义接口即可使其工作。是的,您可以在不定义接口的情况下设置
any
。不过,拥有
接口是一种很好的做法。只要意识到我为已经定义的
thisRoyState.age设置了类型即可。Javascript是完全有效的typescript,您不必定义类型。这就是说,如果您计划不使用类型,您可能根本就不使用typescript。@MikeS。正确的。问题中的问题无论如何都与类型有关,因为
newPRYState
方法的返回类型是一个对象,所以
this.JamesState
this.RoyState
的类型会自动设置为对象,因此编译过程中会出现问题。
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; 
}