This is probably slightly more verbose than you're hoping for on the Sass side, but its the best you're going to get:
%link {
color: blue;
}
%block-margins {
margin: 1rem 0;
}
@mixin typography {
&.typography, .typography & {
@content;
}
}
a {
@include typography {
@extend %link;
}
}
p, ul, ol, pre, address {
@include typography {
@extend %block-margins;
}
}
Output:
a.typography, .typography a {
color: blue;
}
p.typography, .typography p, ul.typography, .typography ul, ol.typography, .typography ol, pre.typography, .typography pre, address.typography, .typography address {
margin: 1rem 0;
}