2017-01-29 6 views
-2

이 질문에 대한 논란과 일관성이 없으므로 클래스, 파일 이름, 접미사 및 typescript에 대한 다른 이름 지정 표준을 명확히하고 싶습니다. Typescript 프로젝트에서 추상 클래스, 인터페이스의 이름을 지정하고 논리적으로 코드를 구성하는 방법에 대해 알고 싶습니다.TypeScript의 추상 클래스 및 인터페이스에 이름 지정

가능한 해결책 : 인터페이스에 대한

: 아무것도

  • 모든
  • 에 추가 된 "I"접미사로 접두사 "인터페이스"와
  • 로와

    • 추상 클래스 :

      0 자바와 PHP에서 같은 C#

      public class User : AbstractUser, IUser 
      

      모든

    예에서 아무것도 접두사

  • 로 "자료"와 같은 접두사로 "추상"와
  • 답변

    0

    우리의 노드 응용 프로그램 인터페이스에서 많이 요구하고있다 - 그들은 사방, 우리는 유형 검사 및 유형 힌트 때문에 의미있는 이름은 우리에게 매우 중요하다을한다.

    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> { 
        // ... 
        } 
    
    } 
    
    2

    나는 이것이 맛의 문제라고 생각합니다. 내가 인터페이스 이름 User 대신 IUser 또는 사용자 개체에 따라서 어떤 클래스와 같은 행동 순수한 데이터 객체 인 일반 JSON에 의해 ​​설명 될 수 있습니다 경우 UserInterface을 사용하십시오

    .

    interface User { 
        name: string; 
        email: string; 
    } 
    
    function createDummyUser(): User { 
        return { 
         name : "Alice", 
         email: "[email protected]" 
        } 
    } 
    

    나는 ('자동차'와 같은) 객체의 추상 클래스의 일반 이름을 사용하는 것과 비에 대한 특정 이름을 사용 : 당신이 구현 클래스를 필요가 없습니다 수 있기 때문에, 당신은 항상 객체 리터럴을 사용할 수 있습니다 ('Beetle'과 같은) 추상 클래스.실수로 생성자를 보호하지 않도록 추상 구현을 사용하지 않도록 보장 할 수 있습니다.

    class Car { 
        protected constructor() { 
        } 
    } 
    
    const fail = new Car(); // error because c'tor is protected 
    
    class Beetle extends Car { 
         public constructor(){ 
          super(); 
         } 
    } 
    
    let itBe = new Beetle(); // here we go!