Определение свойства в типизациях Typescript

#javascript #typescript #typescript-typings

#javascript #typescript #typescript-typings

Вопрос:

У меня есть объект JavaScript, в котором хранится словарь слов:

 var Words = {}; 
Words.Account="Account";
Words.Account_Login="Account Login";
  

Мое определение Typescript выглядит следующим образом:

 declare class Words {
    Account: string;
    Account_Login: string;
}
  

Чтобы использовать его в моем TypeScript, я должен использовать «прототип». Как я могу не использовать prototype?

 /// <reference path="../typings/words.d.ts" />
var abc = Words.prototype.Account_Login;
  

Ответ №1:

В вашем примере вы обращаетесь к Account_Login через класс Words, как если бы это была статическая переменная.

Если вы создаете класс Words , я бы ожидал, что вы будете использовать его примерно так:

 var myWords = new Words();
var abc = myWords.Account_Login;
  

Возможно, вместо определения класса вы хотите определить интерфейс, подобный следующему:

 declare interface IWords{
    Account: string;
    Account_Login: string;
}
  

Затем, взяв свой объект Words, убедитесь, что вы используете интерфейс, который вы определили

 var myWords = Words as IWords;
var abc = myWords.Account_Login;
  

Ответ №2:

@tj-Рокфеллер прав, я также обнаружил, что если бы я просто сделал слова статическими, я мог бы использовать их по назначению.

 var Words = {}; 
  static  Words.Account="Account";
  static  Words.Account_Login="Account Login";
  

Комментарии:

1. Это должно быть ответом?