Tìm kiếm trang web

TypeScript: làm cho lớp chỉ hiển thị bên trong module


Hãy xem đoạn mã sau:

module MyModule {
    class MyPrivateClass {
        ...
    }

    export class MyPublicClass {
        private var: MyPrivateClass; // MyPrivateClass is unknown
    }
}

Tôi muốn MyPrivateClass chỉ hiển thị bên trong MyModule, cụ thể để sử dụng nội bộ trong MyPublicClass. Bên ngoài MyModule, chỉ MyPublicClass mới nên hiển thị. Tôi nghĩ rằng bố cục trên sẽ được nhưng VS lại báo rằng MyPrivateClass không hiển thị bên trong MyPublicClass. Thêm export trước định nghĩa của MyPrivateClass khiến nó hiển thị với MyPublicClass nhưng đồng thời cũng hiển thị ra bên ngoài.

Có cách nào để chỉ làm cho nó hiển thị với MyPublicClass không?

Cảm ơn bạn.

Câu trả lời #1

Đây là một ví dụ hoạt động cho thấy lớp riêng, lớp công khai, việc sử dụng lớp riêng từ lớp công khai và cố gắng sử dụng lớp riêng, điều này gây ra lỗi.

Nếu bạn vẫn gặp lỗi, bạn có thể tiết lộ tên mà bạn đang cố gắng sử dụng cho module gây ra vấn đề không?

module MyModule {
    class MyPrivateClass {
        doSomething() {
            return 1;
        }
    }

    export class MyPublicClass {
        private x = new MyPrivateClass();

        someFunction() {
            return this.x.doSomething();
        }
    }
}

var examplePublic = new MyModule.MyPublicClass();
var result = examplePublic.someFunction(); // 1

var examplePrivate = new MyModule.MyPrivateClass(); // error

Câu trả lời #2

Nếu bạn muốn nó là riêng tư trong JavaScript được phát ra, bạn có thể làm điều này bằng cách di chuyển instance lớp riêng tư vào bên trong module, nhưng không phải bên trong lớp được xuất ra.

module MyModule {
    class MyPrivateClass {
        prop1: number = 1;
    }

    var foo: MyPrivateClass = new MyPrivateClass();

    export class MyPublicClass {
        someMethod(){
            var bar = foo.prop1;
        }
    }
}

var x = new MyModule.MyPublicClass();

Bài viết liên quan