如何在带有接口的 Typescript 中声明公共和私有变量?

Posted

技术标签:

【中文标题】如何在带有接口的 Typescript 中声明公共和私有变量?【英文标题】:How can I declare public and private variables in Typescript with interfaces? 【发布时间】:2014-09-07 19:48:56 【问题描述】:

我有以下代码:

interface IEnumElement 
    elem: string;
    text: string;
    val: number

interface IIndexable<T> 
    [index: string]: T;


class AdminBase 

    ExamStatusId: IIndexable<IEnumElement> = 
        All: 
            elem: "",
            text: 'Exam Status: All',
            val: 0
        ,
        Current: 
            elem: "asdf",
            text: 'Exam Status: Current',
            val: 1
        
    

这给了我一个错误提示:

Error   5   Public property 'ExamStatusId' of exported class has or is 
using private type 'IEnumElement'.  C:\Protractor\Latest\TypeScript1.ts

【问题讨论】:

【参考方案1】:

我想问题出现了,一旦你开始导出 AdminBase 类。正如这里很好地解释的那样:

Why does Typescript use the keyword "export" to make classes and interfaces public?

我们要做的,就是导出接口

export interface IEnumElement 
    elem: string;
    text: string;
    val: number

export interface IIndexable<T> 
    [index: string]: T;


export class AdminBase 

    ExamStatusId: IIndexable<IEnumElement> = 
        All: 
            elem: "",
            text: 'Exam Status: All',
            val: 0
        ,
        Current: 
            elem: "asdf",
            text: 'Exam Status: Current',
            val: 1
        
    

【讨论】:

以上是关于如何在带有接口的 Typescript 中声明公共和私有变量?的主要内容,如果未能解决你的问题,请参考以下文章

(如何)我应该在 Vue.js 组件(TypeScript)中使用访问修饰符(公共、私有等)吗?

带有 Typescript 的 Redux Thunk

如何在 Vue Router v4 中为自定义元字段声明 TypeScript 类型接口?

如何在带有 React 的 Typescript/JSX 中使用带有箭头函数的泛型?

如何在 TypeScript 接口中定义静态属性

与接口同名的 TypeScript 类