2017-01-19 5 views
0

Можете ли вы, ребята, сказать мне, почему, когда я кодирую AngularJS с помощью TypeScript в Visual Studio, я не могу скомпилировать этот код:? я использую правильный тип ng.route.IRouteParamsService для $ routeParams ???

var param = $ routeParams.id не компилируется, но его действительный способ написать код. Если я не объявляю тип для $ routeParams, компилятор не жалуется и все работает. Не имеет большого смысла для меня. Пожалуйста посоветуй.

List item

ответ

0

Я не проект с ngRoute типизации передо мной, но вы пробовали $routeParams['id']?

angular-route typings show это объект index.

namespace route { 
     interface IRouteParamsService { 
      [key: string]: any; 
     } 
} 

Поскольку типизации не может знать заранее, что Params вы будете иметь, это лучший способ (без дженериков, который был бы громоздким в данном случае), чтобы для динамических объектов.

+0

Да, индексатор работает нормально. Немного странно, что доступ к параметру по имени * $ routeParams.id * работает, если я не предоставляю тип * ng.route.IRouteParamsService *, если я удалю тип, я могу напрямую использовать * $ routeParams.id * – monstro

+0

@monstro, если вы не вводите '$ routeParams' как' ng.route.IRouteParamsService', тогда ваш проект Виджета (возможно, зависит от 'tsconfig.json'), рассматривая его как type' any'. Поскольку это 'any', он может иметь любую форму, а TypScript позволяет рассматривать его как таковой. – seangwright

+0

да, похоже, этот объект похож на динамический ViewBag в MVC – monstro

Смежные вопросы