Typescript对象或类:类实现接口时不可能有其他属性?

Typescript对象或类:类实现接口时不可能有其他属性?,typescript,class,interface,extension-methods,Typescript,Class,Interface,Extension Methods,我想知道,当typescript类实现接口时,为什么不可能在该类中实现其他属性或函数。。。它说:…“Object literal只能指定已知的属性,而“FirstName”不存在于类型perinterface”。。 我认为在java中,也可以实现其他道具或函数,implementas接口只是类的一个强制性子集,而不是一个限制。。这种行为在打字脚本中正常吗 interface persInterface { lastName: String, sayHello:

我想知道,当typescript类实现接口时,为什么不可能在该类中实现其他属性或函数。。。它说:…
“Object literal只能指定已知的属性,而“FirstName”不存在于类型perinterface”
。。 我认为在java中,也可以实现其他道具或函数,implementas接口只是类的一个强制性子集,而不是一个限制。。这种行为在打字脚本中正常吗

interface persInterface {
         lastName: String,
         sayHello: () => number
     }

 var person: persInterface = { 
    FirstName:"Tom", 
    lastName:"Hanks", 
    sayHello: ()=>{ return 10} ,
 };

您讨论了实现接口的类,但示例代码没有这样做,它只有一个对象文本。使用该对象文字,您已经定义它将完全是一个persInterface,这就是为什么您在尝试添加不属于persInterface的属性时出错的原因

如果您确实尝试拥有一个实现接口的类,那么您可以做您想要做的事情,而不会出现任何类型错误():

如果您使用的是文字,那么您需要创建一个从基本接口扩展而来的接口,并指定额外的属性:

interface persInterface {
  lastName: string,
  sayHello: () => number
}

interface persPlusPlus extends persInterface {
  lastName: string
}

const person: persPlusPlus = { 
  firstName:"Tom", 
  lastName:"Hanks", 
  sayHello: ()=> { return 10; } ,
};

是的,你是对的,对不起,我指的是对象,我修改了我的问题,所以这正好定义了我想要的对象,但不可能在我的接口上扩展我的对象,对吧?你可以创建一个从另一个接口扩展的接口,然后说你的对象文字就是那种扩展类型。我加了一个例子。
interface persInterface {
  lastName: string,
  sayHello: () => number
}

interface persPlusPlus extends persInterface {
  lastName: string
}

const person: persPlusPlus = { 
  firstName:"Tom", 
  lastName:"Hanks", 
  sayHello: ()=> { return 10; } ,
};