git update-index --assume-unchanged path/to/file
git update-index --no-assume-unchanged path/to/file
git ls-files -v | grep '^[[:lower:]]'
<!-- | |
even though the "blue" comes later in the list of classes, | |
but CSS rules of precedence actually depends of the order of | |
classes in the stylesheet | |
--> | |
<span class="red blue"> | |
so I'm red | |
</span> |
git update-index --assume-unchanged path/to/file
git update-index --no-assume-unchanged path/to/file
git ls-files -v | grep '^[[:lower:]]'
/** | |
* @link this is taken from here for reference | |
* https://github.com/testing-library/react-hooks-testing-library/issues/20#issuecomment-476628600 | |
*/ | |
import { useState, useEffect } from 'react'; | |
import { renderHook } from '@testing-library/react-hooks'; | |
describe('error hook tests', () => { | |
function useError(obj: Error | string): boolean { | |
if (obj.constructor.name === 'Error') { |
// .babelrc | |
{ | |
"presets": [ | |
[ | |
"@babel/preset-env", | |
{ | |
// this tells @babel "hey, don'y change any of the modules, let Webpack handle it | |
"modules": false | |
// you only get the individual pollyfill that you need | |
"useBuiltIns": "usage" |
interface Base { | |
id: string; | |
timestamp: string; | |
} | |
interface Product extends Base { | |
price: number; | |
stock: number; | |
} |
const { PerformanceObserver, performance } = require('perf_hooks'); | |
const obs = new PerformanceObserver((items) => { | |
console.log(items.getEntries()[0]); | |
performance.clearMarks(); | |
}); | |
obs.observe({ entryTypes: ['measure'] }); | |
const has = Object.prototype.hasOwnProperty; |
const connect = (mapStateToProps) => (Component) => { | |
return class Connect extends React.Component { | |
state = mapStateToProps(store.getState()); | |
componentDidMount() { | |
// когда store меняется, обновит компонент | |
this.unsubscribe = store.subscribe(this.update); | |
} | |
componentWillUnmount() { |
/** | |
* understanding .constructor property | |
*/ | |
function User() { | |
} | |
// when functions are created, they're given a "prototype" property which is an object | |
console.log(User.prototype); // {} |
// The type of a box is always defined by the 'display' property: | |
/** | |
* block: | |
* 100% of parent's width | |
* vertically, one after another | |
*/ | |
/** | |
* inline-block: |
// Partial application and currying are two different techniques for specializing a generalized function | |
// Partial application takes some of the arguments now and then takes all of the rest arguments later | |
function partial(fn, ...firstArgs) { | |
return function applied(...lastArgs) { | |
return fn(...firstArgs, ...lastArgs); | |
}; | |
} |