2015-10-13 39 views
0

TypeScript新手,嘗試從js轉換爲ts(使用angular 1.x)。這是一個控制器。有問題轉換爲ts。 「module」是ui路由器狀態提供程序上的自定義數據元素。將角色1.x控制器轉換爲TypeScript的問題

(function(module) { 
    "use strict"; 
    module.controller("aboutController", [ 
     "$state", 
     function($state) { 
      var vm = this; 
      // pass the module to the service to get the content for the about page 
      // $state.current.data.module 
      vm.content = $state.current.data.module; 
     } 
    ]); 
} (angular.module("app.ui"))); 

我的最新嘗試使用TS:

module myApp.ui { 
    "use strict"; 
    class AboutController { 
     constructor(private $state: ng.ui.IStateProvider) { 
      this.content = $state.current.data.module; 
     } 
    } 
    angular.module("app.ui").controller("aboutController", AboutController); 
} 

錯誤
錯誤TS2339:房產 '內容' 的類型不存在 'AboutController'。
錯誤TS2339:類型'IStateProvider'上不存在屬性'current'。

修復
(1)I應該已經使用IStateService,不IStateProvider - 解決 '當前的' 錯誤,上面的#2。 (2)添加'public content:string'這一行在ctor之上 - 解決上面#1的'內容'錯誤。 THX @Brocco

+0

這是什麼不起作用? – devqon

+0

發現我的第一個問題。使用IStateProvider而不是IStateService。 –

+0

對於'content'錯誤,我是否需要顯式聲明一個類成員?這是需要在TypeScript,不像js? –

回答

2

住宅 '內容' 的類型不存在 'AboutController'

您需要打字稿申報所有類屬性:

class AboutController { 
    content: any; // property declaration 
    constructor(private $state: ng.ui.IStateProvider) { 
     this.content = $state.current.data.module; 
    } 
} 

物業「當前'不存在'IStateProvide'類型

使用IStateService。注意:這些通常是服務您反正注入和後綴是一致的。