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