我有以下内容:
interface IUser {
email: string
password: string
}
class User {
email: string
password: string
constructor(email: string, password: string) {
this.email = email
this.password = password
}
isEmailValid(): boolean {
return validatorJs.isEmail(this.email)
}
isPasswordValid(): boolean {
return validatorJs.isStrongPassword(this.password, opts)
}
}
function createUser(user: IUser) {
// applying isPasswordValid and isEmailValid
//insert ...
}
function getUser(): IUser {
return new User('foo@bar.com', 'foobar')
}
Run Code Online (Sandbox Code Playgroud)
我必须在接口名称前加上字母“I”,这是正确的还是我应该采取不同的做法?
Deb*_*ahK 20
有人开发了 TypeScript 风格指南。您可以在这里找到它: https: //ts.dev/style
从该指南:
这是 TypeScript 语言的风格指南,基于 Google 提供的语言。它包含规则和最佳实践。选择最适合您团队的方法。
这是关于接口命名的内容:
不要专门标记接口(
IMyInterface或MyFooInterface),除非它在其环境中是惯用的。为类引入接口时,首先为其指定一个名称,以表达该接口存在的原因(例如,如果接口表示用于 JSON 中存储/序列化的格式,则为类 TodoItem 和接口 TodoItemStorage)。
Rya*_*ugh 18
尽管在更广泛的 TS 社区中通常不使用接口,但没有正式的命名约定I
,除非它们明确由类实现,例如:
import type { IUser } from '$models/interfaces/iuser.interface';
import type { IDeserializable } from '$models/interfaces/ideserializable.interface';
export class UserModel implements IDeserializable<IUser>, IUser {
public email: string;
public password: string;
deserialize(input: IUser): this {
Object.assign(this, input);
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
(模式改编自Navneet Sharma 的sveltekit-starter。)
因此,您为接口选择哪种命名方法最终取决于您自己的决定。
归档时间: |
|
查看次数: |
42391 次 |
最近记录: |