Hyper JavaScript Snippets (Visual Studio Code)
Hyper JavaScript Snippets is a snippets collection for JavaScript and TypeScript. The snippets follow some rules to make it more friendly to intellisense, point-free-style programming etc. Prettier is highly recommanded to work with this extension.
Install from VSCode Extension Marketplace Hyper JavaScript Snippets .
Easy Learn - related snippets shared a same namespace or pattern, like every for
loop prefix start with fo
, all assignment snippet share *a
pattern.
Composable - No semicolon (point-free friendly), no newline, no placeholder, small snippet, the very end tabstop as possible, make composing snippets friendly.
Avoid conflict - Try to avoid snippet's prefix conflict with variable name and built-in snippet's prefix.
Use Prettier to help you formating your code.
Disable built-in snippets with Control Snippets or hiding with built-in command Insert Snippet
.
Set "editor.snippetSuggestions": "top"
.
Set "editor.formatOnSave": true,
.
Set "editor.suggest.snippetsPreventQuickSuggestions": false,
.
Moving cursor on snippet content break tab stop (intented ), but okey on user input content 😩.
Can not use "choice" to provide selection, affect: destrucring assignment...
There is no intenllisense / autocomplete hint when typing in active snippet (VSCode default).
Affect: No more autocomplete hint including any snippet, object methods, or global function .
Turn off editor.suggest.snippetsPreventQuickSuggestions
help a bit.
Can not correctly generate paired bracket when there is a character right beside cursor.
A space added before :
, affect: sw
, case
, pd
, etc.
How to remember so many snippets prefix for new user?
Related snippets shared a same namespace, like for every for
loop snippets prefix are start with fo
, all assignment snippets shared *a
pattern.
Prefix
Desc
Body
va
var assignment
var $1 = $0
la
let assignment (ES2015)
let $1 = $0
ca
const assignment (ES2015)
const $1 = $0
vad
var destructuring assignment (ES2015)
var ${0:dest} = $1
lad
let destructuring assignment (ES2015)
let ${0:dest} = $1
cad
const destructuring assignment (ES2015)
const ${0:dest} = $1
Prefix
Desc
Body
if
if statement
if ($1) $0
el
else statement
else $0
ifel
if/else statement
if ($1) $2 else $0
elif
else if statement
else if ($1) $0
ter
ternary operator
$1 ? $2 : $0
sw
switch case
switch ($1) {$2}$0
case
switch's case
case $1 : $0
Prefix
Desc
Body
fo
for loop
for ($1 ; $2 ; $3) $0
foi
for in loop
for (const $1 in $2) $0
fof
for of loop (ES2015)
for (const $1 of $2) $0
foa
for await of loop (ES2018)
for await (const $1 of $2) $0
wh
while loop
while ($1) $0
tc
try/catch
try {$1} catch $2 {$0}
tf
try/finally
try {$1} finally {$0}
tcf
try/catch/finally
try {$1} catch $2 {$3} finally {$0}
Prefix
Desc
Body
f
function
function ($1) {$0}
f
function (TypeScript)
function ($1)$2 {$0}
fn
named/generator function
function $1($2) {$0}
fn
named/generator function (TypeScript)
function $1($2)$3 {$0}
fa
async function
async function ($1) {$0}
fa
async function (TypeScript)
async function ($1)$2 {$0}
fna
async named/generator function
async function $1($2) {$0}
fna
async named/generator function (TypeScript)
async function $1($2)$3 {$0}
af
arrow function (ES2015)
($1) => $0
afa
async arrow function (ES2015)
async ($1) => $0
ar
arrow function with return type (ES2015, TypeScript)
($1)$2 => $0
ara
async arrow function with return type (ES2015, TypeScript)
async ($1)$2 => $0
ag
generic/generator arrow function (ES2015, TypeScript)
$1($2)$3 => $0
aga
async generic/generator arrow function (ES2015, TypeScript)
async $1($2)$3 => $0
iife
immediately-invoked function expression (IIFE)
($2)($1)$0
pd
parameter destructuring with type (TypeScript)
${0:param} : ${1:type}
Prefix
Desc
Body
seq
sequence of 0..n
[...Array(${1:length}).keys()]$0
Prefix
Desc
Body
ol
object literal
{ $1: $0 }
Prefix
Desc
Body
cs
class (ES2015)
class ${1:name} { $0 }
cse
class extends (ES2015)
class ${1:name} extends ${2:base} { $0 }
cst
class constructor (ES2015)
constructor($1) {$0}
csm
method (ES2015)
${1:name}($2) {$0}
csma
async method (ES2015)
async ${1:name}($2) {$0}
gter
getter (ES2015)
get ${1:property}() {$0}
ster
setter (ES2015)
set ${1:property}(${2:value}) {$0}
gs
getter and setter (ES2015)
get ${1:property}() {$0} set ${1:property}(${2:value}) {}
Prefix
Desc
Body
tof
typeof
typeof ${1:source} === $0
iof
instanceof
${1:source} instanceof ${0:Class}
Prefix
Desc
Body
pr
Promise (ES2015)
new Promise($0)
prs
Promise resolve (ES2015)
Promise.resolve($1)$0
prj
Promise reject (ES2015)
Promise.reject($1)$0
pra
Promise all (ES2015)
Promise.all($1)$0
pras
Promise all settled (ES2020)
Promise.allSettled($1)$0
prn
Promise any (ES2021)
Promise.any($1)$0
prt
Promise type (TypeScript)
Promise<$0>
Prefix
Desc
Body
exp
export (ES2015)
deprecated: export $0
expd
export default (ES2015)
deprecated: export default $0
expas
export as (ES2015)
deprecated: export { $1 as $2 };$0
expf
export from (ES2015)
deprecated: export ${2:name} from '$1';$0
expaf
export all from (ES2015)
deprecated: export *$2 from '$1';$0
ex
export (ES2015)
export $0
exd
export default (ES2015)
export default $0
exas
export as (ES2015)
export { $1 as $2 };$0
exf
export from (ES2015)
export ${2:name} from '$1';$0
exaf
export all from (ES2015)
export *$2 from '$1';$0
im
import (ES2015)
import$0
imm
import.meta (ES2015)
import.meta$0
imu
import.meta.url (ES2015)
import.meta.url$0
imp
import module (ES2015)
import ${2:name} from '$1'$3;$0
imd
import module dynamically (ES2020)
import($1)$0
imf
import file (ES2015)
import '$1';$0
impas
import module as (ES2015)
import ${2:*} as ${3:name} from '$1'$3;$0
Prefix
Desc
Body
cb
Node.js style callback
(err, ${1:response}) => {$0}
re
require
require(${1:path})$0
req
require assignment
const ${2:name} = require('$1');$0
em
exports.member
exports.$1 = $2;$0
me
module.exports
module.exports = $1$0
on
event handler
on('${1:event}', ${2:callback});$0
Prefix
Desc
Body
cl
console.log
console.log($1)$0
cla
console.assert
console.assert($1)$0
clcl
console.clear
console.clear($1)$0
clc
console.count
console.count($1)$0
clcr
console.countReset
console.countReset($1)$0
cld
console.debug
console.debug($1)$0
cldi
console.dir
console.dir($1)$0
cldx
console.dirxml
console.dirxml($1)$0
cle
console.error
console.error($1)$0
clg
console.group
console.group($1) $0 console.groupEnd($1)
clgc
console.groupCollapsed
console.groupCollapsed($1) $0 console.groupEnd($1)
cli
console.info
console.info($1)$0
cltb
console.table
console.table($1)$0
clt
console.time
console.time('$1') $0 console.timeEnd('$1')
cltl
console.timeLog
console.timeLog($1)$0
cltr
console.trace
console.trace($1)$0
clw
console.warn
console.warn($1)$0
Prefix
Desc
Body
sett
setTimeout
setTimeout(${2:callback}, ${1:delay})$0
setin
setInterval
setInterval(${2:callback}, ${1:delay})$0
setim
setImmediate (node.js)
setImmediate(${1:callback}$2)$0
nt
process nextTick (node.js)
process.nextTick($1);$0
Prefix
Desc
Body
us
insert 'use strict' statement
'use strict';
Prefix
Desc
Body
typ
type (TypeScript)
type ${1:name} = $0
int
interface (TypeScript)
interface ${1:name} {$2}$0
enu
enum (TypeScript)
enum ${1:name} {$2}$0
enc
const enum (TypeScript)
const enum ${1:name} {$2}$0
mod
module (TypeScript)
module ${1:name} {$2}$0
nam
namespace (TypeScript)
namespace ${1:name} {$2}$0
Only in typescript
and typescriptreact
file type.