* Fix rest parameters indexing with TypeScript 'this parameter'
The TypeScript [this parameter][0] is a fake parameter and should not be
taken into account when counting the function parameters. This patch
skips it by using the condition taken from the `transform-typescript`
plugin.
Note: since the `transform-typescript` plugin is removing this kind of
parameter, including it before the `transform-parameters` plugin solves
the issue. This patch fixes the issue in other cases.
[0]: https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters
* nit: improve the 'this parameter' detection condition
* improve performance by checking the parameter list length before
accessing it
* simplify the test a bit by using the `isIdentifier` second
parameter
When there is a variable declaration inside the function body, which shares its name to a referenced identifier in default parameter expression, the function body should be wrapped into iife, otherwise the binding in default parameter scope will be shadowed by function body.