2014-09-11 27 views
12

coffeescript ma taki cukier składni:Znak zapytania składnia z coffeescript bez coffeescript

item.getFoo?().fooParam?.bar 

co przekłada się na dłuższą javascript równoważne z getFoo==null i fooParam==null kontroli. Pytanie brzmi: czy są jakieś sposoby użycia tej składni w javascriptie wanilii z biblioteką/translatorem/kompilatorem innym niż CoffeeScript? Używamy Traceur w naszym projekcie, ale nie ma takiej składni, ponieważ nie jest zgodna z ES6 (chociaż ja tego chcę). Może jakiś sposób wdrożenia go w rozwidleniu Traceur?

+0

próbowałeś go widelec? gdzie są problemy? –

+0

Wydaje mi się, że zbyt trudne jest dla mnie nauczenie się wewnętrznych działań Traceura w celu implementacji tej małej funkcji. – artch

+0

Tak, patrzyłem na to i wydaje się to bardzo skomplikowane. Czy używasz skompilowanego javascript na kliencie lub czy wysyłasz kompilator do klienta? (Czy w kodzie znajduje się '

1

Ostatnio miałem to samo pytanie i przyjechałem tu mając nadzieję na lepsze rozwiązanie niż moje obecne. Jeśli robisz to często, to łatwiej funkcję to zrobić dla Ciebie:

var qm = function(arg) { 
    if (arg instanceof Object) return arg; 
    return function(){}; 
}; 

Potem go użyć, należy owinąć obiektów w nim, aby upewnić się żaden błąd jest podniesiona. To zaczyna wyglądać brzydko, jeśli istnieje wiele q Question m arki na linii

qm(qm(item.getFoo)().fooParam).bar 
+0

Po prostu zdałem sobie sprawę, że to się całkowicie rozpada, gdy kontekst ("ten") wchodzi w grę. – willlma