我有一个示例类:
// chatUsers.ts
import { IUsers } from "../../Interfaces/IUsers.ts"
export class chatUsers implements IUsers {
// methods..
}
我想在单独的文件中实现它的方法以保持代码干净,而不是在一个文件中实现所有的东西。
我当前的方法(如这里所建议的):导入那些函数并将它们绑定到这个类实现:
// IUsers.ts
interface IUsers {
addUser: (name: String) => (void);
// other methods
}
// chatUsers.ts
import { IUsers } from "../../Interfaces/IUsers.ts"
import { addUser } from "./Add.ts"
export class chatUsers implements IUsers {
public addUser = addUser.bind(this);
// other methods..
}
// Add.ts
import { chatUsers } from "./chatUsers.ts"
export function addUser(this: chatUsers, name: String) {
// implementation
}
一切正常,只是addUser函数不再由TS守护,我可以随便叫它:
// somewhere in business logic:
let local_chat_users = new chatUsers();
local_chat_users.addUser(true, null, "Josh", 42);
有没有更好的方法在几个文件中实现一个类?
实际上,我不知道是否有任何好的解决方案存在,以绑定函数类型安全。但是作为一个快速的解决方案,您可以将导出的函数包装在您的类中。
export class chatUsers implements IUsers {
// Wrapper function
public addUser(name: string): void {
// Your imported function
addUser.call(this, "name");
}
}