我有一个登录/注册模块,我想为他们写一个模型。
我会使用接口,但我需要有一个预定义的值。
我想知道 - 我应该将预定义的输出作为常量(它不会被更改,改变)并使用接口。或者将其写为类(当前)
目前,我写了两个单独的类 - registration.model.ts,login.model.ts,我可以抽象只使用一个模型吗? (例如:user.model.ts)
一些例子:
export class LoginUser {
constructor(
private email,
private password,
// I need to have it, backend expects it to be sent
private connection = 'Username-Password-Authentication'
) { }
}
export class RegistrateUser {
constructor(
public name: string,
public lastName: string,
public email: string,
public password: string,
// I need to have it, backend expects it to be sent
private connection = 'Username-Password-Authentication'
) { }
}
答案 0 :(得分:3)
刚刚遇到了你的问题&正在调查同样的事情。
参考Angular 2 Style docs here,'指南'是在没有一个类可以的前提下实现接口:
根据经验:
Angular Guidelines> Typescript Guidelines(在Angular 2项目中)。
希望这会帮助你! :)
答案 1 :(得分:1)
我肯定会使用接口。这是一种简单的方法,遵循TypeScript建议使用JSON。
有问题的财产,
private connection = 'Username-Password-Authentication';
可以由执行请求的服务添加。
这也会减少代码重复,因为您可以使用通用函数或服务来创建此请求对象。
例如:
export default function withRequiredAuthProps<T>(model: T) {
return {...model, connection: 'Username-Password-Authentication'};
}
然后,将模型发送回服务的Http服务可以使用类型约束来验证在发出请求之前是否已添加该属性
例如:
export default class MyHttpClient {
post<T extends {connection: 'Username-Password-Authentication'}>(url: string, body: T) {
//...
}
}
这些只是作为示例,但它们基于最小的代码,并且有效。