{
	"jsdoc snippet": {
		"prefix": "jsdoc comment",
		"body": [
			"/**",
			" * $0",
			" */"
		],
		"description": "jsdoc snippet"
	},

	"Constructor": {
		"prefix": "ctor",
		"body": [
			"/**",
			" *",
			" */",
			"constructor() {",
			"\tsuper();",
			"\t$0",
			"}"
		],
		"description": "Constructor"
	},
	
	"Class Definition": {
		"prefix": "class",
		"body": [
			"/**",
			" * ${name}",
			" */",
			"class ${name} {",
			"\tconstructor(${parameters}) {",
			"\t\t$0",
			"\t}",
			"}"
		],
		"description": "Class Definition"
	},
	
	"Public Method Definition": {
		"prefix": "public method",
		"body": [
			"/**",
			" * ${name}",
			" */",
			"public ${name}() {",
			"\t$0",
			"}"
		],
		"description": "Public Method Definition"
	},
	
	"Private Method Definition": {
		"prefix": "private method",
		"body": [
			"private ${name}() {",
			"\t$0",
			"}"
		],
		"description": "Private Method Definition"
	},
	
	"Import external module.": {
		"prefix": "import statement",
		"body": [
			"import ${name} = require('$0');"
		],
		"description": "Import external module."
	},
	
	"Property getter": {
		"prefix": "get",
		"body": [
			"",
			"public get ${value}() : ${string} {",
			"	${return $0}",
			"}",
			""
		],
		"description": "Property getter"
	},
	
	"Log to the console": {
		"prefix": "log",
		"body": [
			"console.log(${_});",
			"$0"
		],
		"description": "Log to the console"
	},
	
	"Define a full property": {
		"prefix": "prop",
		"body": [
			"",
			"private _${value} : ${string};",
			"public get ${value}() : ${string} {",
			"	return this._${value};",
			"}",
			"public set ${value}(v : ${string}) {",
			"	this._${value} = v;",
			"}",
			""
		],
		"description": "Define a full property"
	},
	
	"Triple-slash reference": {
		"prefix": "ref",
		"body": [
			"/// <reference path=\"${_}\" />",
			"$0"
		],
		"description": "Triple-slash reference"
	},
	
	"Return false": {
		"prefix": "ret0",
		"body": [
			"return false;$0"
		],
		"description": "Return false"
	},
	
	"Return true": {
		"prefix": "ret1",
		"body": [
			"return true;$0"
		],
		"description": "Return true"
	},
	
	"Return statement": {
		"prefix": "ret",
		"body": [
			"return ${_};$0"
		],
		"description": "Return statement"
	},
	
	"Property setter": {
		"prefix": "set",
		"body": [
			"",
			"public set ${value}(v : ${string}) {",
			"	this.${_} = v;",
			"}",
			""
		],
		"description": "Property setter"
	},
	
	"Throw Exception": {
		"prefix": "throw",
		"body": [
			"throw \"${_}\";",
			"$0"
		],
		"description": "Throw Exception"
	},
	
	"For Loop": {
		"prefix": "for",
		"body": [
			"for (var ${index} = 0; ${index} < ${array}.length; ${index}++) {",
			"\tvar ${element} = ${array}[${index}];",
			"\t$0",
			"}"
		],
		"description": "For Loop"
	},
	"For-Each Loop using =>": {
		"prefix": "foreach =>",
		"body": [
			"${array}.forEach(${element} => {",
			"\t$0",
			"});"
		],
		"description": "For-Each Loop using =>"
	},	
	"For-In Loop": {
		"prefix": "forin",
		"body": [
			"for (var ${key} in ${object}) {",
			"\tif (${object}.hasOwnProperty(${key})) {",
			"\t\tvar ${element} = ${object}[${key}];",
			"\t\t$0",
			"\t}",
			"}"
		],
		"description": "For-In Loop"
	},
	"Function Statement": {
		"prefix": "function",
		"body": [
			"function ${name}(${params}:${type}) {",
			"\t$0",
			"}"
		],
		"description": "Function Statement"
	},
	"If Statement": {
		"prefix": "if",
		"body": [
			"if (${condition}) {",
			"\t$0",
			"}"
		],
		"description": "If Statement"
	},
	"If-Else Statement": {
		"prefix": "ifelse",
		"body": [
			"if (${condition}) {",
			"\t$0",
			"} else {",
			"\t",
			"}"
		],
		"description": "If-Else Statement"
	},
	"New Statement": {
		"prefix": "new",
		"body": [
			"var ${name} = new ${type}(${arguments});$0"
		],
		"description": "New Statement"
	},
	"Switch Statement": {
		"prefix": "switch",
		"body": [
			"switch (${key}) {",
			"\tcase ${value}:",
			"\t\t$0",
			"\t\tbreak;",
			"",
			"\tdefault:",
			"\t\tbreak;",
			"}"
		],
		"description": "Switch Statement"
	},
	"While Statement": {
		"prefix": "while",
		"body": [
			"while (${condition}) {",
			"\t$0",
			"}"
		],
		"description": "While Statement"
	},
	"Do-While Statement": {
		"prefix": "dowhile",
		"body": [
			"do {",
			"\t$0",
			"} while (${condition});"
		],
		"description": "Do-While Statement"
	},
	"Try-Catch Statement":{
		"prefix": "trycatch",
		"body": [
			"try {",
			"\t$0",
			"} catch (${error}) {",
			"\t",
			"}"
		],
		"description": "Try-Catch Statement"
	},
	"Set Timeout Function": {
		"prefix": "settimeout",
		"body": [
			"setTimeout(function() {",
			"\t$0",
			"}, ${timeout});"
		],
		"description": "Set Timeout Function"
	}
}