zoukankan      html  css  js  c++  java
  • Inner Classes with TypeScript

    原文: https://blog.oio.de/2014/03/21/inner-classes-typescript/

    b.ts

    class Foo {
        sex:string;
        say(){
            new Foo.InnerFoo('aaa').doIt();
        }
    }
    
    module Foo {
        export class InnerFoo {
            constructor(name:string){
                console.log(name);
            }
            doIt() { 
                console.log('inner class do it.');
            }
        }
    }
    
    let a = new Foo.InnerFoo('fly');
    let b = new Foo();
    b.say();
    

      

    -----------------------------------------------------------------

    In TypeScript, there is no exlicit concept like inner classes.
    So what you cannot do in TypeScript is as follows:

    1
    2
    3
    4
    5
    6
    class Foo {
      export class InnerFoo {
      }
    }
     
    new Foo.InnerFoo();

    You can achieve something similar by merging a class with a module containing the inner class.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Foo {
    }
     
    module Foo {
        export class InnerFoo {
          doIt(){}
        }
    }
     
    new Foo.InnerFoo();

    The merging happens implicitely by using the same name for the class and the module.

    Of course you can use the inner class in the outer class:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Foo {
        doSomethingWithInnerFoo() {
            new Foo.InnerFoo().doIt();
        }
    }
     
    module Foo {
        export class InnerFoo { doIt(){} }
    }
     
    new Foo().doSomethingWithInnerFoo();

    The only downside here is that the inner class must be exported, so it is always visible to the outside – there are no private inner classes.

  • 相关阅读:
    Eclipse JSP/Servlet 环境搭建
    2017 世界主要国家和地区 GDP 排名
    Twsited异步网络框架
    RabbitMQ队列,RedisMemcached缓存
    Paramiko,数据库
    SelectPollEpoll异步IO与事件驱动
    进程,线程,协程
    socketserver模块
    socket
    类的相关知识
  • 原文地址:https://www.cnblogs.com/oxspirt/p/9929702.html
Copyright © 2011-2022 走看看