Oop 接口继承类型脚本

Oop 接口继承类型脚本,oop,typescript,inheritance,Oop,Typescript,Inheritance,我只想写一个用户模块,它有多个类,比如UserDetail、UserResestPassword等等 这些类将共享一些公共属性,我可以在每个类上声明属性并初始化它 第二种方法是我将使用需要在中声明的继承 接口 export interface Iuser { UserID:string; UserName:string } 并将其实现到类中 import {Iuser} from './IuserDetail' class UserInfo implements Ius

我只想写一个用户模块,它有多个类,比如UserDetail、UserResestPassword等等

这些类将共享一些公共属性,我可以在每个类上声明属性并初始化它

第二种方法是我将使用需要在中声明的继承 接口

export interface Iuser {
    UserID:string;
    UserName:string
}
并将其实现到类中

 import {Iuser} from './IuserDetail'

 class UserInfo  implements Iuser {}

我的问题是,typescript中不支持吗?如果不是的话,在TypeScript中如何解决这个问题?有一个称为类型擦除的功能,在编译过程中删除所有类型信息,这样JavaScript输出不包含类型注释、接口或环境声明,只包含真实代码

这意味着,当您在运行时要求模块加载器获取Iuser接口时,它在JavaScript文件中不存在

我的建议可能是将您的接口及其主要实现放在文件中。这意味着您不会试图加载一个只是空白文件的模块

例如:

export interface Iuser {
    UserID:string;
    USerName:string

}

export class UserInfo  implements Iuser {
}
在其他文件中,您可以:

import * as User from './UserInfo'

export class Example implements User.Iuser {
}
看看这个:

编译后接口实际上不存在,但严格用于类型检查

// i-user.ts

export interface IUser {
    UserID:string;
    UserName:string
}
就像其他语言中的接口一样,您必须实现接口的所有成员。TypeScript将检查您是否缺少任何内容

// user-info.ts

import { IUser } from './i-user'

export class UserInfo implements IUser {
    UserID:string;
    UserName:string;
    OtherInfo:string;
}
使用扩展所有父方法将是可用的,您不需要再次实现它们

// specific-user-info.ts

import { UserInfo } from './user-info'

class SpecificUserInfo extends UserInfo {
    logInfo() {
        console.log(this.UserID, this.UserName);
    }
}

什么是不受支持的?如果要继承,请使用类和扩展关键字。@Saravana我收到以下错误:没有导出的成员“UserInfo”。下面是我的扩展类导出类UserInfo扩展Iuser{},请用一个完整的例子更新你的问题。