Статьи

TypeScript для приложений Магазина Windows 8

Что такое TypeScript? 

См.
Http://www.typescriptlang.org.

TypeScript был недавно выпущен и стал новой горячей темой. Один из вопросов, которые я задавал и слышал, заключается в том, можем ли мы использовать это для разработки приложений Магазина Windows с использованием Javascript и иметь интересные функции, которые были показаны в видео и примерах.

Одной из замечательных функций была функция разделенного окна, где вы можете кодировать в TypeScript слева, а после нажатия кнопки «Сохранить» она компилируется в Javascript слева. Поэтому я запустил новый проект Javascript для Магазина Windows в Visual Studio, чтобы проверить, все ли работает. Прежде чем начать, убедитесь, что у вас есть следующее:

Создать новый проект


Начните с создания нового проекта.
Я только что использовал шаблон «Пустое приложение» для целей этого поста, но любой из установленных шаблонов, безусловно, применим.

Нажмите «ОК», и вы увидите, что в Solution Explorer следующая структура.
Разверните папку «js», чтобы увидеть файлы javascript, которые есть по умолчанию.

Добавление функциональности TypeScript


Есть пара файлов, которые необходимы для того, чтобы TypeScript и Windows 8 хорошо играли вместе, а также jQuery.
Лучший способ описать их — это то, что они являются оболочками для
WinJS ,
WinRT и
JQuery или помощниками. Существует также
lib.d.ts, который отмечен в файле как «
API скриптов ECMA »
 

Нажмите на любой из них, чтобы увидеть источник.
 

Я скачал все это и теперь поместил их в папку с именем
tsWin в проекте для ссылок в других моих файлах ts.
 

В примерах, которые были показаны онлайн, просто добавив
 файл
.ts в ваш проект и нажав Сохранить; Visual Studio автоматически создаст  файл .js, свяжет
его с файлом TypeScript и покажет скомпилированный JavaScript в окне разделения. Тем не менее, это не так в приложении Магазина Windows … Пока.
 

Но мы все еще можем заставить все это работать, вот как.
 

Добавьте новый файл javascript в папку js, НО назовите его с расширением
.ts . Я назвал файл
Data.ts . Затем повторите и назовите файл
Data.js . Ваш обозреватель решений должен выглядеть следующим образом.
Обратите внимание, что я также добавил папку tsWin и упомянутые файлы.
 

Теперь вы можете открыть файл data.ts и получить представленное разделенное окно и увидеть, что файл .js скомпилирован справа. 

Здесь есть еще один важный файл, называемый win.ts, он добавляет оболочку для
setImmediate и ссылается на файлы winrt.d.ts и winjs.dts. Я ссылаюсь на этот файл в любом из TypeScript, который я использую, но помещаю его в папку js.

Быстрый пример


Итак, вот краткий пример, который будет проходить через следующие концепции:
  • Создание простого класса
  • Расширение класса с помощью наследования
  • Использование сервисов определения местоположения
  • Получение статической карты из Google Maps API
  • Вставка элемента управления изображением на страницу.

Откройте файл data.ts.
Сначала мы создадим начальный класс Location и класс MyLocation в TypeScript и увидим вывод в javascript.
TypeScript :
///<reference path='win.ts'/>
 
module Data {
 
    class Location {
        longitude: any;
        latitude: any;
        url: string;
    }
 
    class MyLocation extends Location {
        retrieved: any;
    }
};

Javascript :

var __extends = this.__extends || function (d, b) {
    function __() { this.constructor = d; }
    __.prototype = b.prototype;
    d.prototype = new __();
}
 
var Data;
(function (Data) {
    var Location = (function () {
        function Location() { }
        return Location;
    })();  
 
    var MyLocation = (function (_super) {
        __extends(MyLocation, _super);
        function MyLocation() {
            _super.apply(this, arguments);
        }
        return MyLocation;
    })(Location);  
})(Data || (Data = {}));
; ;
Снимок экрана только для того, чтобы увидеть, что показывают в VS 2012

Не уверен насчет вас, но я не хотел бы писать код наследования для Javscript, TypeScript убивает его там! Хорошо, давайте двигаться дальше. Далее я добавлю функцию, чтобы получить местоположение с устройства, заполнить объект myLoc, а затем создать и вставить изображение в тело страницы.

Обратите внимание, что TypeScript и Javacript для этого одинаковы, разница здесь в том, что у нас есть типобезопасный код.

TypeScript :

var locator = new Windows.Devices.Geolocation.Geolocator();
 
  locator.getGeopositionAsync().then(function (pos) {
   
      var myLoc = new MyLocation();
      myLoc.latitude = pos.coordinate.latitude;
      myLoc.longitude = pos.coordinate.longitude;
 
      myLoc.retrieved = Date.now;
      myLoc.url = "http://maps.googleapis.com/maps/api/staticmap?center="
          + myLoc.latitude + "," + myLoc.longitude
          + "&zoom=12&size=400x400&sensor=false";
 
      // add a new img tag to the document
      var img = document.createElement("img");
      // set the src and style
      img.setAttribute("src", myLoc.url);
      img.setAttribute("style", "height:400px;width:400px;");
         
      // get the paragraph tag we set for the location of the content
      var p = document.body.getElementsByTagName("p")[0];
      p.appendChild(img);

Когда вы нажмете «Сохранить», вы заметите, что в строке состояния в левом нижнем углу Visual Studio будет отображаться «Компиляция TypeScript …», а затем полученный Javascript обновится / отобразится на правой панели. Важно отметить, что если у вас открыт файл js, вы получите приглашение
«Такой и такой файл открыт, вы хотите перезагрузить» .

Прежде чем запускать приложение, убедитесь, что вы включили возможности Location в файле манифеста пакета, как показано ниже, или вы получите неприятное окно сообщения, сообщающее, что вы этого не сделали.

Хорошо, нажмите F5 и посмотрите результаты.

Сначала вы получите приглашение «Позвольте мне использовать службы определения местоположения».


И тогда страница представлена ​​с загруженной картой.

Это небольшое руководство по началу работы с приложениями TypeScript и Магазина Windows!
Довольно классные вещи.

Советы и хитрости

Контент / Тип пакета


Убедитесь, что все файлы TypeScript (.ts) помечены как None, чтобы они не распространялись без необходимости в вашем приложении.
 
Отладка

Вы можете поместить точки останова в сгенерированные файлы .js и иметь доступ к непосредственному окну, смотреть и т. Д.
 
Зависимые файлы

Мне нравится видеть зависимые файлы, как я привык видеть в других типах проектов (см. Ниже).
Поскольку это еще не встроено в функциональность Магазина Windows с помощью TypeScript, вот как это сделать.

Вам нужно отредактировать файл проекта.
Лучший способ сделать это — использовать расширение Power Commands for Visual Studio или перейти к нему и открыть в блокноте или другом текстовом редакторе.
PowerCommands для Visual Studio

Для этого решения найдите ссылку data.ts в файле и измените ее следующим образом:


    <Content Include = «js \ data.js»>

      <DependentUpon> data.ts </ DependentUpon>

    </ Content>

    <None Include = «js \ data.ts» />


Сохраните файл и перезагрузите проект, и теперь вы увидите, что файл .js будет показан под файлом .ts.

Вывод


Мне было очень весело вникнуть в это и попробовать его в приложениях Магазина.
Исходя из жизни C # / XAML за последние много лет, мне будет интересно вернуться к некоторым сценариям. Мне нравится опция, и я вижу некоторые действительно интересные возможности с TypeScript.