Hva er navnekonvensjonen for grensesnitt og klasser i TypeScript?
Jeg har følgende:
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('[email ', 'foobar')
}
Jeg må sette bokstaven "I" foran grensesnittnavnet, er det korrekt eller bør jeg gjøre det annerledes?
Svar #1
Noen har utviklet en TypeScript stilguide. Du kan finne den her: https://ts.dev/style
Fra den guiden:
Dette er stilguiden for TypeScript-språket som var basert på den som leveres av Google. Den inneholder både regler og beste praksis. Velg de som fungerer best for teamet ditt.
Dette er hva det står om navngivning av grensesnitt:
Ikke merk grensesnitt spesielt (
IMyInterfaceellerMyFooInterface) med mindre det er idiomatisk i miljøet. Når du introduserer et grensesnitt for en klasse, gi det et navn som uttrykker hvorfor grensesnittet eksisterer i utgangspunktet (f.eks. klasse TodoItem og grensesnitt TodoItemStorage hvis grensesnittet uttrykker formatet som brukes for lagring/serialisering i JSON).
Svar #2
Det finnes ingen offisiell navnekonvensjon, men det er vanlig i det bredere TS-miljøet å ikke bruke I for grensesnitt med mindre de eksplisitt skal implementeres av klasser, som for eksempel:
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;
}
}
(Mønster tilpasset fra sveltekit-starter av Navneet Sharma.)
Så hvilken navngivningsmetode du velger for grensesnitt, er til syvende og sist opp til deg selv.
