Skip to content

Instantly share code, notes, and snippets.

View frontdevops's full-sized avatar
:octocat:
Develop 𝔾𝕖𝕖𝕜𝕁𝕆𝔹

Sasha Majorović frontdevops

:octocat:
Develop 𝔾𝕖𝕖𝕜𝕁𝕆𝔹
View GitHub Profile
@frontdevops
frontdevops / property_decorators_part_2.1.ts
Last active January 22, 2016 09:50
TypeScript static property decorator example
/**
* Декоратор для логирования статических свойств
* @param target
* @param key
*/
function log_static_prop(target:any, key:string):any {
var val = target[key];
return {
get: ():any => {
console.log(`Get: ${key} => ${val}`);
@frontdevops
frontdevops / property_decorators_part_2.ts
Last active January 22, 2016 09:50
Set property decorator in TypeScript
/**
* Декоратор для логирования свойств
* @param target
* @param key
*/
function logprop(target:any, key:string):void {
// получаем значение свойства
var val:any = this[key];
@frontdevops
frontdevops / property_decorators_part_2.3.ts
Created January 22, 2016 11:59
TypeScript class decorator example
"use strict";
function logClass(target:any):any {
// save a reference to the original constructor
var original = target;
// a utility function to generate instances of a class
function construct(constructor, args) {
let c:any = function(){
@frontdevops
frontdevops / parameter_decorators_part_1.ts
Created January 22, 2016 13:26
TypeScript parameter and metadata decorators example
"use strict";
function logParameter(target:Object, key:string, index:number) {
var metadataKey = `log_${key}_parameters`;
if (Array.isArray(target[metadataKey])) {
target[metadataKey].push(index);
}
else {
target[metadataKey] = [index];
}
@frontdevops
frontdevops / example_of_log_decorators.ts
Created January 22, 2016 14:03
TypeScript decorators example
//"use strict";
function logProperty(target:Object, key:string):void {
var val:any = this[key];
const getter = function():any {
console.log(`Get: ${key} => ${val}`);
return val;
};
@frontdevops
frontdevops / decorator_with_arguments.ts
Created January 22, 2016 14:43
TypeScript decorator with arguments example
function logClass(target:any, filterName?:string):any {
var original = target;
function construct(constructor, args) {
let c:any = function () {
return constructor.apply(this, args);
};
c.prototype = constructor.prototype;
return new c;
}
@frontdevops
frontdevops / property_decorators_part_2.2.ts
Last active January 22, 2016 14:54
TypeScript property decorator example
"use strict";
/**
* Декоратор для логирования свойств
* @param target
* @param key
*/
function logprop(target:any, key:string):any {
var val:any,
#!/bin/sh
local prefix=$2
local s='[[:space:]]*' w='[a-zA-Z0-9_]*' fs=$(echo @|tr @ '\034')
sed -ne "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" \
-e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p" $1 |
awk -F$fs '{
indent = length($1)/2;
// Где-то в декларации прописано так:
declare var require: <T>(s :string) => T;
// Есть интерфейсы
interface ICSSModule {
font :string;
background :string;
}
interface ComponentButton extends ICSSModule {
// Указать тип
const style :ComponentButton = require<ComponentButton>('button.css');
// Если указали тип, то и генерик уже не нужен
const style :ComponentButton = require('button.css');
// Применить typecast
const style = <ComponentButton> require<ComponentButton>('button.css');
// Ну тогда генерик и ненужен
const style = <ComponentButton> require('button.css');