iva*_*kov 7 javascript oop naming-conventions node.js typescript
这个问题存在争议,也没有一致性,所以我想澄清一下打字稿的类、文件名、后缀等的命名标准。我想知道,你在 Typescript 项目中如何命名抽象类、接口以及逻辑组织代码?
可能的解决方案:
对于接口:
对于抽象类:
使用 C# 的示例
public class User : AbstractUser, IUser
Run Code Online (Sandbox Code Playgroud)
Java 和 PHP 中相同
public class User extends AbstractUser implements UserInterface
Run Code Online (Sandbox Code Playgroud)
在打字稿中
export class User extends AbstractUser implements UserInterface
Run Code Online (Sandbox Code Playgroud)
这是基于 C#、Java 和现代 PHP7+ 等语言的框架中使用的常规方法
微软建议添加“Interface”作为后缀,这对我来说是正确的。 https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Interfaces.md#class-types
另一个流行的风格指南建议不要为接口的前缀添加任何后缀,对我来说违反了规则,可读性和整体看起来都是错误的。https://basarat.gitbooks.io/typescript/content/docs/styleguide/styleguide.html#interface
export class User extends AbstractUser implements User
Run Code Online (Sandbox Code Playgroud)
我们的节点应用程序对接口的要求很高——它们无处不在,我们进行类型检查和类型提示,因此有意义的名称对我们来说非常重要。
import {MediaInterface} from 'app/models/mediaInterface';
import {ServerInterface} from 'app/server/serverInterface';
import {UserInterface} from 'app/models/userInterface';
export class MediaStorage extends AbstractStorage implements StorageInterface {
/**
* current user
* @private
*/
private user: UserInterface;
/**
* @constructor
* @param {ServerInterface} app
*/
constructor(private app: ServerInterface) {
// ...
}
/**
* @param {UserInterface} user
* @returns {Promise<any>}
*/
public deleteUserMedia(user: UserInterface): Promise<any> {
// ...
}
/**
* @param {object} req request
* @param {object} res response
* @returns {Promise<MediaInterface>}
*/
public create(req: any, res: any): Promise<MediaInterface> {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15316 次 |
| 最近记录: |